def is_prime(x):
if x < 2:
return False
else:
for n in range(2, x):
if x % n == 0:
return False
else:
return True
print is_prime(9)
返回True
而不是False
。
我不太了解。
range (2,9)
包括以下列表:2,3,4,5,6,7,8
和9 % 3 == 0
,
那么,为什么我没有得到False
作为该函数的答案?
答案 0 :(得分:1)
这是因为您实际上没有循环,因为在第一个周期中返回True(9%2 == 0为False)。
类似这样的问题应该可以解决:
def is_prime(x):
if x < 2:
return False
for n in range(2, x):
if x % n == 0:
return False
return True
答案 1 :(得分:1)
通过保留原始循环并且不提早退出,可以大大简化逻辑。您可以将第一个条件添加到最终收益中:
def is_prime(x):
for n in range(2, x):
if x % n == 0:
return False
return x > 2
顺便说一句,Erastothenes的筛子是解决此问题的一种很酷的方法,它具有更好的运行时复杂性。这是简短说明的链接: