自学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