检查素数的Python代码(55,25)是素数
Python程序检查数字列表中的质数,认为55和25是素数,实际上不是素数,因为55/5=11,提示为零。 那么代码中有什么问题呢检查素数的Python代码(55,25)是素数,python,numbers,primes,Python,Numbers,Primes,Python程序检查数字列表中的质数,认为55和25是素数,实际上不是素数,因为55/5=11,提示为零。 那么代码中有什么问题呢 def check_prime(n): for i in range(2,n,1): if(n%i)==0: return 1 else : return 0 numbers=[51,52,53,54,55,13,407,508,11,17,60,12,19,25,30,]
def check_prime(n):
for i in range(2,n,1):
if(n%i)==0:
return 1
else :
return 0
numbers=[51,52,53,54,55,13,407,508,11,17,60,12,19,25,30,]
for j in numbers:
if check_prime(j)==1:
print("the {} is not prime".format(j))
else:
print("th {} is prime".format(j))
因为,你把return放在你的函数中,因此你的函数只在其他函数中做第一次求值,你的函数只在一个数字是奇数或是曾经的时候才返回,因为只有当i=2时才求值,你的函数必须是
def check_prime(n):
for i in range(2,n):
if(n%i)==0:return False
return True
如果
check\u prime
函数中出现逻辑错误,请尝试以下操作:
def check_prime(n):
for i in range(2, n, 1):
if (n % i) == 0:
return True
return False
numbers = [51, 52, 53, 54, 55, 13, 407, 508, 11, 17, 60, 12, 19, 25, 30, ]
for j in numbers:
if check_prime(j):
print("the {} is not prime".format(j))
else:
print("th {} is prime".format(j))
函数在一次迭代后返回,从而取消for循环的效果。当您发现它不是质数时,您希望返回,但您需要继续遍历所有数字,然后才能说质数是质数。此外,翻转返回值以使其更直观
def check_prime(n):
for i in range(2,n,1):
if(n%i)==0:
return 0
return 1
您需要使循环中的返回具有条件。在这种情况下,它将在单循环后退出,这就是为什么您会看到它返回误报。您能在这里跳过代码吗?我可以建议翻转返回值吗?这与您的问题无关,但是如果您将函数名check_prime视为“这是质数吗?”的问题,那么您希望返回值1为是,0为否。但是为什么将数字11作为质数19作为质数abe返回,因为它们都在x%2==0时失败,然后停止循环,所以它们都被标记为prime。对于11和19,这是正确的,但是对于25和55,这是不正确的。非常感谢,但是为什么代码返回这个错误,并且只包含接受除以5的数字