我正在尝试在 Python 中创建一个初筛。
我从 2 到 2000 的列表开始。我想通过检查遍历所有素数,并从列表中删除所有素数的倍数。
我还没有绕过素数的循环,但是我确实有一种方法可以从数字 2 开始,并删除它的所有倍数。
primes=list(range(2,2001))
p=2
while p<len(primes):
for x in range (p*p, len(primes), p):
primes.remove(x)
print(primes)
这打印:[...] 1989, 1991, 1993, 1995, 1997, 1999, 2000]
如您所见,数字 2000 仍然存在,而且不应该存在。
Traceback (most recent call last):
File "C:/Users/Are/PycharmProjects/Project Euler/10.py", line 8, in <module>
primes.remove(x)
ValueError: list.remove(x): x not in list
我的推理有什么问题?
我正在使用 PyCharm,有没有办法让我在出错时打印 x 的值?