首先,这是家庭作业,我目前正在 python 上研究 Eratosthenes 筛。我的程序看起来像:
x=[]
for i in range(2,100):
x.append(i)
primes=[]
i=2
while len(x)!=0:
k=x[0]
x.pop(0)
primes.append(k)
while k*i in x:
x.remove(k*i)
i+=1
print(primes)
print(x)
当我的程序打印“素数”时,我得到:
[2, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39,
41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77,
79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]
为什么列表中有合数?看起来程序应该可以工作
#编辑了程序,现在看起来:
x=[]
for i in range(2,100):
x.append(i)
primes=[]
while len(x)!=0:
i=2
k=x[0]
x.pop(0)
primes.append(k)
while k*i<=max(x):
x.remove(k*i)
i+=1
if k*i not in x:
i+=1
print('primes','\n',primes,sep='')
print('x','\n',x,sep='')
仍然无法正常工作,出现错误;“ValueError:list.remove(x):x不在列表中”