Python OverflowError: не удается уместить 'long' в целое число index = size

Я хочу сгенерировать два действительно больших простых числа, используя алгоритм, который я нашел в Интернете и немного изменил.

I получить эту ошибку в строке 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

Как я могу исправить мою ошибку?

Если вы знаете лучший способ создания больших простых чисел, это тоже будет полезно.

13
задан Michael Currie 10 September 2015 в 22:08
поделиться