初见

小练习-默尼森数

2020-03-06  本文已影响0人  旭Louis

找第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个默尼森数
上一篇 下一篇

猜你喜欢

热点阅读