如何修改我的主筛代码以防止内存错误?

时间:2017-10-30 12:08:29

标签: algorithm python-2.7 out-of-memory primes sieve-of-eratosthenes

我的python 2.7代码已经基于Eratosthenes prime筛子编码,在一定限度内找到所有素数,在找到超过十亿的素数时会出现内存错误。在我的代码中,我只使用一个列表来存储对应于每个数字的true / false值(当它是素数时为true,否则为false)。下面是我的代码,`

def primeSieve(limit):
   sieve = [True] * ((limit+1)/2)
   for i in range(3, int(limit**0.5)+1, 2):
      if sieve[i/2]:
        sieve[(i*i)/2::i] = [False] * ((limit-i*i-1)/(2*i)+1)
   return [2] + [2*i+1 for i in range(1, (limit+1)/2) if sieve[i]]

print primeSieve(100000000)

如何修改我的代码以找到超过十亿的素数?谢谢。

0 个答案:

没有答案