我想使用我在網上找到的算法生成兩個非常大的素數。Python OverflowError:無法將「long」放入index =大小的整數
我得到這個錯誤在第5行:
Python OverflowError: cannot fit 'long' into an index=sized integer
我的代碼:
import math
def atkin(end):
if end < 2: return []
lng = ((end/2)-1+end%2)
**sieve = [True]*(lng+1)**
for i in range(int(math.sqrt(end)) >> 1):
if not sieve[i]: continue
for j in range((i*(i + 3) << 1) + 3, lng, (i << 1) + 3):
sieve[j] = False
primes = [2]
primes.extend([(i << 1) + 3 for i in range(lng) if sieve[i]])
return primes
我怎樣才能解決我的錯誤?
如果你知道更好的方法來產生大質數,那也是有幫助的。
你是否試過這個小數字的代碼?如果你想使用大數字,你應該嘗試http://gmplib.org/ library。這個庫有一個Python包裝器,它對我來說工作得很好。 – Elalfer 2011-01-20 19:46:39