检查素数的Python代码(55,25)是素数

检查素数的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,]

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,]
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的数字