Python实例:找第n个默尼森数

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


# -*- coding: utf-8 -*-
"""
Spyder zrex

This is a temporary script file.
"""

from math import sqrt

def is_prime(n):
    if n == 1:
        return False
    for i in range(2, int(sqrt(n))+1):
        if n % i == 0:
            return False
    return True

def is_monisen(n):
    m = 2 ** n - 1
    if is_prime(m):
        return True

if __name__ == "__main__":
    
    monisen = []
    for n in range(1,20):
        if is_prime(n):
            if is_monisen(n):
                monisen.append(2**n-1)
    print (monisen)

原创文章,作者:Tina,如若转载,请注明出处:https://python.01314.cn/201712482.html