我有一个简单的问题:取一个数字并确定它是否是素数。我无法弄清楚为什么以下内容不起作用。
def prime(x):
for i in range (2, x):
if x % i == 0:
return False
return True
prime(21)
这返回真!我不知道为什么。
我有一个简单的问题:取一个数字并确定它是否是素数。我无法弄清楚为什么以下内容不起作用。
def prime(x):
for i in range (2, x):
if x % i == 0:
return False
return True
prime(21)
这返回真!我不知道为什么。
在您的代码中,您已放入return True
for 循环,因此它仅检查数字是否可被 2 整除,如果不是,则返回 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 之后,无论如何都不能分割它。
将来尝试通过在默认情况下打印循环索引的值或使用调试器来调试您的代码,这真的很有帮助,并且可以帮助您提高程序员的水平。