我在堆栈溢出时看到过类似的代码,但没有一个有同样的问题。 基本上,我的问题是为什么当我试图在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
答案 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
。