我有点问题。我正在编写一个is_prime
函数,但无论何时运行它,它都会在is_prime(9)
上失败,我看不出原因:
def is_prime(x):
if x < 2: ##because negative numbers, 0 and 1 are not prime##
return False
elif x == 2:
return True
else:
for n in range(2, x):
if x % n == 0:
return False
else:
return True
由于某种原因True
?
is_prime(9)
答案 0 :(得分:6)
这是因为该函数在返回之前不检查所有符合条件的除数。
相反,如果True
不能被2整除,它就会提前x
退出,这不是你想要的奇数(例如9
不能被{{1}整除,但它不是素数。)
相反,您想尝试从2
到2
的所有可能的除数,然后如果x-1
可以被它们全部整除则返回。
为此,请重写:
x