3 votes

Mon générateur de nombres premiers de Mersenne s'arrête à 2^31 - 1

Je possède un code qui crée des nombres premiers les transforme en nombres de Mersenne et puis vérifie à nouveau s'ils sont premiers pour voir s'ils sont des nombres de Mersenne premiers. Cela fonctionne bien à part le fait qu'il s'arrête à 2^31 - 1... (2147483647)

J'utilisais une fonction qui produit des nombres infinis :

def infinity():
    i = 0
    while True:
        i += 1
        yield i

puis je l'ai changé en une boucle while True avec un i += 1 à la fin mais cela ne fonctionne toujours pas.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X