我正在尝试在python中实现eratosthenes的筛子,但是当试图找到所有素数直到例如779695003923747564589111193840021的平方根时,我收到一个错误,说range()的结果有太多项目。我的问题是,我该如何避免这个问题,如果我用 while 循环实例化列表,我会收到一个错误,说我使用了太多内存(甚至在它开始使用页面文件之前),下面列出了这两个:
使用范围()
maxnum = 39312312323123123
primes = []
seq = []
i = 0
seq = range(2,maxnum)
for i in seq:
mul = i * seq
for j in mul:
try:
seq.remove(j)
except:
pass
primes.append(i)
print primes
使用同时:
maxnum = 39312312323123123
primes = []
seq = []
i = 0
while i < maxnum:
seq.append(i)
i+=1
for i in seq:
mul = i * seq
for j in mul:
try:
seq.remove(j)
except:
pass
primes.append(i)
print primes