【问题标题】:Determining if a number is prime in the above code [duplicate]在上面的代码中确定一个数字是否是素数[重复]
【发布时间】:2019-06-25 16:15:19
【问题描述】:

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

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

prime(21)

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

【问题讨论】:

  • 您需要先让循环完全运行,然后再返回。它应该在 for 循环之外
  • 因为return意味着函数的结束——在你的情况下,这已经发生在i==2:如果x % 2 == 0Trueotherwise,则返回False

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


【解决方案1】:

在您的代码中,您已将 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 之后,任何数字都无法分割它。

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

【讨论】:

    猜你喜欢
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2011-05-06
    • 1970-01-01
    • 2015-01-22
    • 2016-09-27
    • 1970-01-01
    相关资源
    最近更新 更多