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