小练习-默尼森数

找第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个默尼森数
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,707评论 0 2
  • 经典程序设计问题:找第n个默尼森数。P是素数且M也是素数,并且满足等式M=2P-1,则称M为默尼森数。例如,P=5...
    偷橘子的喵阅读 4,837评论 0 1
  • 找第n个默尼森数。P是素数且M也是素数,并且满足等式M=2P-1,则称M为默尼森数。例如,P=5,M=2P-1=3...
    极速魔法阅读 6,607评论 0 1
  • 今天和老婆一起去看了铺面,感觉有点远,虽然有熟人,但是感觉还不太成熟,先占个坑。对待孩子还是感觉自己太着急了,希望...
    浦大魔王76阅读 1,352评论 0 0