Я хочу сгенерировать два действительно больших простых числа, используя алгоритм, который я нашел в Интернете и немного изменил.
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
Как я могу исправить мою ошибку?
Если вы знаете лучший способ создания больших простых чисел, это тоже будет полезно.