python 检查质数的代码认为 (55,25) 是质数

python code to check prime number consider (55,25 ) is prime number

snap shot for code 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 放在你的函数中,因此你的函数只在其他函数中做第一次评估 return 如果一个数字是奇数或永远,因为只评估当 i = 2 时,你的函数必须是。

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

你在 check_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))

您的函数在单次迭代后 returns,取消了 for 循环的效果。你想 return 当发现它不是素数时,但你需要继续遍历所有数字才能说素数是素数。此外,翻转 return 值以使其更直观。

def check_prime(n):
    for i in range(2,n,1):
        if(n%i)==0:
            return  0
    return 1

您需要使循环中的 return 成为条件。在这种情况下,它会在一个循环后退出,这就是为什么你会看到它 return 误报。