0

我有一个简单的问题:取一个数字并确定它是否是素数。我无法弄清楚为什么以下内容不起作用。

def prime(x):
    for i in range (2, x):
        if x % i == 0:
            return False 
        return True

prime(21)

这返回真!我不知道为什么。

4

1 回答 1

1

在您的代码中,您已放入return Truefor 循环,因此它仅检查数字是否可被 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 之后,无论如何都不能分割它。

将来尝试通过在默认情况下打印循环索引的值或使用调试器来调试您的代码,这真的很有帮助,并且可以帮助您提高程序员的水平。

于 2019-02-01T05:50:11.777 回答