确定上述代码中的数字是否为质数

时间:2019-02-01 05:44:19

标签: python python-3.x primes primality-test

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

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

prime(21)

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

1 个答案:

答案 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,此后就无法再除以数字了。

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