мой генератор mersenne-prime останавливается на 2 ^ 31 - 1 - PullRequest
1 голос
/ 14 июня 2019

У меня есть код, который создает простые числа, превращает их в числа Мерсенна, а затем проверяет снова, проверяет, простое ли это число Мерсенна.он отлично работает, кроме того факта, что он останавливается на 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
...