检查输入是否为素数的函数。 我知道它已被覆盖了很多次,但我的代码由于某种原因给了我x = 32的真实,我无法弄清楚为什么
def is_prime(x):
if x < 2:
return False
elif x == 2:
return True
else:
for i in range(3,x): #Ignore sqrt(x) improvement
if x%i == 0:
return False
else :
return True
答案 0 :(得分:1)
for i in range(3,x):
首先是数字3.作为32 % 3 != 0
,它返回True
。然后函数中断,因为它返回了一个值。
考虑在for循环之后放置return True
:
for i in range(3,x): #Ignore sqrt(x) improvement
if x % i == 0:
return False
return True
现在,如果一个数字可以被整除,它将立即中断并返回False
。但如果没有数字进入32,for循环将完成,它将返回True
。
此外,如果您使用的是python 2.x,使用xrange()
会更快,因为它会返回一个生成器:)。