У меня есть код, который создает простые числа, превращает их в числа Мерсенна, а затем проверяет снова, проверяет, простое ли это число Мерсенна.он отлично работает, кроме того факта, что он останавливается на 2 ^ 31 - 1 ... (2147483647)
Я использовал функцию, которая выдает бесконечные числа:
def infinity():
i = 0
while True:
i += 1
yield i
, а затемизменил его на while True
цикл с i += 1
в конце, но он все еще не работает.
def isPrime(i):
isprime = True
for j in range(2, int(math.sqrt(i) + 1)):
if i % j == 0:
return False
if isprime and i!=1:
return True
i=1
while True:
isprime = True
for j in range(2, int(math.sqrt(i) + 1)):
if i % j == 0:
isprime = False
break
if isprime and i!=1:
test = (2**i)-1
result = isPrime(test)
if result:
print (test)
i+=1