Python素数循环

Python素数循环,python,Python,我想在列表中找出素数。我写了下面的代码。我的代码返回 not prime prime prime prime prime prime prime prime 我认为问题出在第二个循环上,它不是迭代过去的2,但我不知道为什么。为什么要这样做 check_prime = [26, 39, 51, 53, 57, 79, 85] for i in check_prime: for m in range(2,i): if i%(m)!=0: pri

我想在列表中找出素数。我写了下面的代码。我的代码返回

not prime
prime
prime
prime
prime
prime
prime
prime
我认为问题出在第二个循环上,它不是迭代过去的2,但我不知道为什么。为什么要这样做


check_prime = [26, 39, 51, 53, 57, 79, 85]


for i in check_prime:
    for m in range(2,i):
        if i%(m)!=0:
            print("prime")
            break
        else:
            i%(m)==0
            print("not prime")


在检查了所有的除数并且没有找到给定数字的任何除数后,应该打印
prime

因此,我建议编写一个函数来检查一个数字是
prime
还是
not

check_prime = [26, 39, 51, 53, 57, 79, 85]

def check_if_prime(nr):
    for m in range(2,nr):
        if nr%(m) == 0:
           return False
    return True
 for i in check_prime:
    print('prime' if check_if_prime(i) else 'not prime')
输出

not prime
not prime
not prime
prime
not prime
prime
not prime

您不想检查我%m!=对于anyi(这就是您现在正在做的),0表示alli在范围内(2,i)。最好的方法是使用生成器和函数all():


结束括号。对于编辑来说太小,对于解释器来说太多<代码>如果全部(范围(2,i)中的m为i%m!=0):
check_prime = [26, 39, 51, 53, 57, 79, 85]
for i in check_prime:
    if all(i % m != 0 for m in range(2,i)):
        print("prime")
    else:
        print("not prime")
l=[26,39,51,53,57,79,85]

l1=[]
for i in range(len(l)):
    for j in range(2,(l[i]//2)+1):
        if l[i]%j==0:
            c=0
            break
        else:
            c=1
    if c==1:
        print("prime")
    else:
        print("not prime")