我似乎得到了所有素数,但一些复合数字也出现了.为什么?
p=[2,]
while len(p)<35:
next = p[-1]+1
for i in range(len(p)):
if next%p[i]==0:
next+=1
i=0
p.append(next)
print p
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
[2,3,5,7,11,13,16,17,19,23,27,29,31,35,37,41,43,47,50,53,59,61,65,67,71 ,73,77,79,83,87,89,95,97,101,103]
因为next在for循环中更新时,您没有从主列表的开头进行扫描,以检查new next是否可以整除.您可以尝试以下方式.
p=[2,]
number=3
while len(p)<35:
if all(number%i!=0 for i in p):
p.append(number)
number += 1
print p
Run Code Online (Sandbox Code Playgroud)