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")