素数计算器功能,为什么一个正确而另一个不正确?

时间:2018-03-15 01:21:34

标签: python python-2.7

我在堆栈溢出时看到过类似的代码,但没有一个有同样的问题。 基本上,我的问题是为什么当我试图在for循环中检查不等式(!=)时它不起作用。但是当我尝试使用相等(==)时,它工作正常吗?

所以这段代码总是返回True:

def is_prime(x):
  if x == 2:
    return True
  else:
    for i in range(2, x):
        if x > 2:
            if x % i != 0:
                return True
    return False

虽然这段代码工作正常:

def is_prime(x):
  if x < 2:
    return False
  if x == 2:
    return True
  else:
    for i in range(2, x):
        if x > 2:
            if x % i == 0:
                return False
    return True

1 个答案:

答案 0 :(得分:0)

你的第二个函数是正确的,因为如果在任何循环False中它返回x % i == 0。否则,它返回True。这是素数的定义。

您的第一个函数不正确,因为如果在任何循环True中它返回x % i != 0。否则,它返回False。这个问题是所有整数 k &gt; 2在[2, k )范围内存在一个整数 i ,使 k i 不等于0 。通常,您可以设置 i = k - 1.因此该函数将始终返回True