我正在尝试制作一个简单的 Eratosthenes 筛选脚本,而且我刚刚开始使用 Python 和一般的编码,所以我现在并不担心效率。
import math
primes = range(2,500)
upperLimit = math.ceil(math.sqrt(float(primes[-1])))
def sieve(numbers):
for item in range(0,int(upperLimit)):
n = numbers[item]
while n < upperLimit:
n += numbers[item]
print n
print numbers
numbers.remove(n)
sieve(primes)
print primes
这一直告诉我第 12 行中的 numbers.remove(n) 不存在,所以我将打印语句放在它上面以试图弄清楚发生了什么。它运行良好,删除了它应该做的,最多 24。然后,不是再次将 2 添加到 n,而是将 n 更改为 6。这就是给我错误的原因,但我不知道为什么它一直这样做.