古希腊数学家欧几里德就已证明素数有无穷多个,并提出一些素数可写成“2P-1”(其中指数P也是素数)的形式,其中17世纪法国数学家、法兰西科学院奠基人马林·梅森(Martin Mersenne)是其中成果较为卓著的一位,因此数学界将“2P-1”型的素数称为“梅森素数”。
1772年,欧拉在双目失明的情况下,靠心算证明了231-1(即2147483647)是第8个梅森素数,这个记录一百多年内都没有人打破。下面是欧拉证明素数有无穷多个的过程,但是梅森素数是否有无穷多个还没有人能证明。
假使素数p1,p2,p3……pn只有那么多个,现在有新数p=p1*p2*p3*……pn + 1,可见p无法被p1,p2,p3……pn任意一个整除,所以p是素数,那就和素数只有n个矛盾了,所以素数有无穷多个。
1996年,乔治·沃特曼编制了一个梅森素数计算程序,后来发展成为GIMPS(Great Internet Mersenne Prime Search,你可以从上面找到最新的第48个梅森素数发现的信息)项目,在超级计算机尝试之后,希望借助互联网和分布式计算的力量,寻找更大的梅森素数(现在已经有超过180个国家的近一百万台计算机参与计算)。
在寻找梅森素数的过程中,并不是漫无目的的。很容易证明,如果 2P-1 是素数,则 P 也一定是素数(这样我们就首先可以列出一个“可疑梅森素数清单”,进一步的计算原理可以在这里找到),证明如下:
假设2P-1 是素数的情况下,p却是合数,那么令p=r*s,r和s都是大于1的正整数,那么 xrs-1 就可以拆解成 xs-1 乘以 xs(r-1) + xs(r-2) + … + xs + 1。所以,如果p是合数的话,2p-1 也会是合数(因为它可以拆出 2s-1 的因子来),这与假设命题不符,所以p就只能是素数了。
值得注意的是,对于n>1,因为 x-1 可以整除 xn-1 ,所以如果要 xn-1 为素数的话,x-1 就必须等于1了,所以x就只能是2了。那么,就可以得到如下推论:
如果a和n都是大于1的正整数,如果 an-1 是素数的话,那么a就只能是2,而且n必须为素数。
美国中央密苏里大学数学教授Curtis Cooper领导的研究小组于一周前的1月25日发现了已知的最大梅森素数——257885161−1(即2的57885161次方减1);该素数有17425170位,如果用普通字号将它连续打印下来,它的长度可超过65公里。
梅森素数的分布极不规则,连找到梅森素数的时间分布都极不规则,有时许多年未能找到一个,而有时则一下找到好几个,探索梅森素数的分布规律似乎比寻找新的梅森素数更为困难。中国的业余数学家周海中在1992年给出了梅森素数分布的精确表达式(“周氏猜测”):
对于素数p和梅森素数 Mp=2P-1 ,当 22^n<p<22^(n+1) 时,Mp有 2n+1-1 个;
推论:当 p<22^(n+1) 时,Mp有 2n+2-n-2 个。
梅森素数是测试计算机速度的一个有力工具,实际上寻找梅森素数的过程也推动了分布式计算的发展(数学这样的基础学科在寻找当前实际意义的时候往往如此,但是谁也无法预料对于未来的工程学科的发展能有多重大的意义),在实际领域,梅森素数也可以用来加密数据。由于把两个非常大的数相乘很容易,但是如果要把一个非常大的数分解,将是非常困难的,在这种加密设计中,要使用很大的素数,素数越大,理论上越不容易被破译。
文章系本人原创,转载请保持完整性并注明出自《四火的唠叨》
相关推荐
梅森素数是素数的一个特殊类型,以其形式M_n = 2^n - 1定义,其中n也是一个素数。例如,当n=2时,M_2=2^2-1=3,是一个梅森素数。这些素数特别吸引数学家的兴趣,因为它们与其它数学领域有着紧密的联系,如生成偶数...
本文将详细介绍如何用Python实现反向数、回文数、回文素数、反素数、梅森素数以及双素数的判断。 首先,让我们定义这些概念: 1. **反向数**:一个数的反向数是将其每一位数字颠倒后得到的新数。例如,123的反向数...
梅森素数是一种特殊的素数形式,以数学家皮埃尔·德·费马的学生约翰·梅森命名。在数学领域,梅森素数是形如2^p - 1的素数,其中p本身也是一个素数。这些素数在数论中具有特别的地位,因为它们与梅森数(2^p)的...
C语言实现求梅森素数的代码与解析 梅森素数是一种特殊的素数,指的是形如2n-1的正整数,其中指数n是素数。梅森素数历来都是数论研究中的一项重要内容,也是当今科学探索中的热点和难点问题。通过C语言实现求梅森...
梅森素数,又称2P-1型素数,是一种特殊形式的素数,定义为2的某个素数次幂减去1。这种类型的素数最早由古希腊数学家欧几里得在公元前提出,他在证明素数无限性的过程中提到了这种结构。2P-1形式的素数在数学中具有...
梅森素数,又称梅森数,是一种特殊形式的素数,定义为\(2^p - 1\),其中\(p\)自身也是一个素数。这些数的探究始于17世纪,由法国数学家马林·梅森提出。梅森素数的发现历史充满了挑战和传奇,其中不乏数学巨匠们的...
小学数学数学故事梅森素数:第47个梅森素数被发现
MATLAB实现求梅森素数(完整代码) 2.代码说明:注释清晰,参数和变量说明清晰,方便更改、方便初学者使用,模块化编程,方便替换目标函数。运行环境Windows7及以上操作系统,MATLAB2014a及以上版本。 3.适用专业:...
梅森素数是素数理论中的一个重要概念,它的发现对于数学研究,尤其是素数分布的研究具有重要意义。梅森素数是指满足特定形式的素数,具体来说就是那些可以表示为2^n-1形式的素数,其中n本身也是一个素数。梅森素数的...
CS1200-计算第八个梅森素数。 给定的MATLAB代码是这样的: clear ; clc ; close all ; format compact ; tol = 1e- 10 ; nlimit = 2000000000 ; primelist = primes(nlimit); nprimes = length(primelist) fprintf( ...
我尝试生成和验证任意大的梅森素数。 当前最大的: M(859433)== 2 ^ 859433-1(258716位)(纯Python3) 梅森素数: 维基百科,自由的百科全书 已知最大术语2 ^ 77,232,917 − 1(2017年12月) OEIS索引A000668...
小学数学数学故事梅森素数:千年不休的探寻之旅3
用梅森素数期实现64位最大均衡分布的F 2线性生成器 什么是MELG-64? 64比特M aximallyëquidistributed F 2 L - inear与梅森素数周期(MELG-64)G enerators是64位梅森-倍捻机型伪随机数生成器2014和2017之间产生,...
寻找梅森素数不仅需要高效的素数判定,还需要对二进制表示和幂运算有深入理解,因为这些素数通常很大,常规方法可能不足以处理。 在这个对话框应用中,程序的反应时间可能通过计时函数(如C++的`clock()`或Windows ...
这些程序可能涵盖了基本的素数判断、梅森素数搜索以及优化技巧,比如使用位运算提高计算速度,或者利用动态规划和缓存策略避免重复计算。 在信息学奥赛中,掌握这类问题的解决方法不仅可以提升参赛者的算法设计能力...
标题和描述提到的是基于梅森素数的后量子可证明安全认证与MAC(消息认证码)的研究。这个话题涉及到网络安全的前沿领域,尤其是随着量子计算的发展,传统的加密和安全机制可能不再足够安全,因此研究后量子时代的...
在2005年秋季江苏省计算机二级VB(Visual Basic)的考试中,一道涉及梅森素数判定的上机试题,不仅考察了考生对于VB编程语言基础语法的掌握,还涉及了较为复杂的数学概念和算法实现。这道题要求考生编写程序,找出2...