自学Python:求梅森素数

作者: 小强聊成长 | 来源:发表于2022-01-06 12:34 被阅读0次

什么是梅森素数?

先说梅森数,梅森数(Mersenne Prime)指的是形如2n-1的正整数,其中指数n是素数,记为Mn。

如果一个梅森数是素数,则称其为梅森素数。例如2^2-1=3,2^3-1=7都是梅森素数。

1722年,瑞士数学大师欧拉证明了2^31-1=2147483647是一个素数,它共有10位数,成为当时世界上已知的最大素数。

迄今为止,人们仅发现了47个梅森素数。梅森素数历来都是数论研究中的一项重要内容,也是当今科学探索中的热点和难点问题。

那么问题来了,求出指数n<50的所有梅森素数。

下面直接上代码:

########################

import math

def sushu(n):# 判断n是否为素数

    k = math.sqrt(n) + 1

    i = 2

    while i <= k:

        if n % i == 0:

            return 0  # n能被j整除,不是素数,返回0

        i += 1

    return 1  # n是素数,返回1

if __name__=="__main__":

    n = 0

    print("梅森素数:")

    for i in range(2, 50):

        p = (2 ** i) - 1  # 求梅森数

        if sushu(p):  # 判断p是否为梅森素数

            n += 1

            print("M(%d) = %d" %(i, p))    # 若当前p为梅森素数,则打印,i为指数

    print("2的指数n<50的所有梅森素数有:%d个" %n)

########################

执行结果如下:

梅森素数:

M(2) = 3

M(3) = 7

M(5) = 31

M(7) = 127

M(13) = 8191

M(17) = 131071

M(19) = 524287

M(31) = 2147483647

2的指数n<50的所有梅森素数有:8个

________________END______________

相关文章

网友评论

    本文标题:自学Python:求梅森素数

    本文链接:https://www.haomeiwen.com/subject/abzhqrtx.html