2016-08-02 4 views
-4
def isprime(x): 
for a in range(2,(x//2)+1): 
    if((x<=0) or (x%a==0)): 
    return(False) 
return(True) 

Это не работает для отрицательных значений. например: isprime(-3) возвращает True, но он должен вернуть False. пожалуйста помоги.Я написал следующий код питона (не работает для минуса значений):

+0

Кто-нибудь, пожалуйста, помогите –

+0

, когда я попытался вызвать функцию, передав отрицательные значения, она всегда возвращает true. –

+0

Во-первых, условие должно не работать при проверке x <= 0 и должно возвращать значение false. Но функция возвращает true. –

ответ

0

К ним элементарно определению школы, простых чисел определяются для положительных чисел только, что ваша функция должна возвращать False для каждого отрицательного числа, например:

def isprime(x): 
    if x <= 0: 
     return False 
    for a in range(2, (x//2)+1): 
     if x % a == 0: 
      return False 
    return True 

Это, как говорится, можно расширить определение (как это сделано в некоторых полях в математике), включить также отрицательные числа (для дальнейшего обсуждения см. here и here). В этом случае для каждого отрицательного числа -n, -n является простым, если n является простым. Поэтому ваш код может быть примерно таким:

def isprime(x): 
    if x <= 0: # or use any |abs| method you'd like, like numpy's 
     x = -x 
    for a in range(2, (x//2)+1): 
     if x % a == 0: 
      return False 
    return True 
0

Проблема в том, что вы проверяете, является ли число отрицательным в цикле for. Например, если x = -3, вы пытаетесь запустить цикл for в диапазоне (2, -1), который является None. Таким образом цикл for никогда не запускается и, следовательно, возвращает True.

def isprime(x): 
if x<=0: 
    return(False) 
for a in range(2,(x//2)+1): 
    if(x%a==0): 
    return(False) 
return(True) 
Смежные вопросы