python输出第n个默尼森数

╄→гoц情女王★ 提交于 2020-03-07 23:47:06

经典程序设计问题:找第n个默尼森数。P是素数且M也是素数,并且满足等式M=2P-1,则称M为默尼森数。例如,P=5,M=2P-1=31,5和31都是素数,因此31是默尼森数。(31是第3个默尼森数)

from math import sqrt,pow
 
def prime(num):
    """检测num是不是质数"""
    k = sqrt(num)
    for i in range(2,int(k+1)):
        if num % i == 0:
            return False
    
    return True
 
def monisen(no):
    """找出第no个莫尼森数"""
    n = 0
    num = 2
    while n < no:
        m = pow(2,num) - 1
        if prime(num) == True and prime(m) == True:
            # 只有num和m都为质数时,n才会加一,即n是莫尼森数的序号
            n += 1
        num += 1
    return int(m),num-1
 
# 输出前五个莫尼森数M 以及对应的质数P
for i in range(1,6):
    print(monisen(i))
————————————————
版权声明:本文为CSDN博主「白王_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wsheng_pyhon/article/details/80471471
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!