我有一个简单的问题:取一个数字并确定它是否为质数。我无法弄清楚为什么以下这些方法不起作用。
def prime(x):
for i in range (2, x):
if x % i == 0:
return False
return True
prime(21)
这返回true!我不知道为什么。
答案 0 :(得分:1)
在代码中,您将return True
放在了for循环中,因此它仅检查数字是否可被二整除,如果不是,则返回true。
宁可使用此
def prime(x):
for i in range (2, x):
if x % i == 0:
return False
return True
还可以提高效率一点用
for i in range (2, int(x/2)+1)
,因为一旦达到x / 2,此后就无法再除以数字了。
将来尝试通过在默认情况下打印循环索引的值或使用调试器来调试代码,这确实很有帮助,并且可以帮助您提高程序员的水平。