1. 程式人生 > >用python尋找莫尼森數

用python尋找莫尼森數

P是素數且M也是素數,並且滿足等式M=2**P-1,則稱M為默尼森數。例如,P=5,M=2**P-1=31,5和31都是素數,因此31是默尼森數。

from math import sqrt
def isprime(x):
    '''判斷x是否為質數'''
    if x == 1:
        return False
    k = int(sqrt(x))
    for i in range(2, k+1):
        if x % i ==0:
            return False
    return True

def monisen(monisen_n):
    '''尋找第monisen_n個莫尼森數'''
    P = 0
    count = 1
    while count <= monisen_n:
        P += 1
        M = 2**P - 1
        if isprime(P) and isprime(M):
            count += 1
            print(P,M)

monisen(5)