找第n个默尼森数。P是素数且M也是素数,并且满足等式M=2P-1,则称M为默尼森数。例如,P=5,M=2P-1=31,5和31都是素数,因此31是默尼森数。
import math
def prime(num):
# 判断是否为素数
if num < 2:
return False
if num == 2:
return True
if num % 2 == 0:
return False
for i in range(3, int(math.sqrt(num))):
if num % i == 0:
return False
return True
def monisen(no):
# 返回第no个默尼森数
n = 0
p = 1
m = 1
while True:
if prime(p):
m = math.pow(2, p) - 1
if prime(m):
n += 1
if n == no:
return int(m)
p += 1
print(monisen(int(input()))) # 输入n,返回第n个默尼森数
网友评论