P是素数且M也是素数,并且满足等式M=2**P-1,则称M为默尼森数。例如,P=5,M=2**P-1=31,5和31都是素数,因此31是默尼森数。
from math import sqrt
def isprime(x):
'''判断x是否为质数'''
if x == 1:
return False
k = int(sqrt(x))
for i in range(2, k+1):
if x % i ==0:
return False
return True
def monisen(monisen_n):
'''寻找第monisen_n个莫尼森数'''
P = 0
count = 1
while count <= monisen_n:
P += 1
M = 2**P - 1
if isprime(P) and isprime(M):
count += 1
print(P,M)
monisen(5)