转载自:
http://xysalon.blog.163.com/blog/static/52352920051120929150/

马林·梅森(Marin Mersenne)(1588-1648)是17世纪法国著名的数学家和修道士
 梅森素数优美而稀少,如同钻石
|
|
素数也叫质数,是只能被自己和 1 整除的数,例如2、3、5、7、11等。2500 年前,希腊数学家欧几里德证明了素数是无限的,并提出少量素数可写成“2 的n次方减 1”的形式,这里 n 也是一个素数。此后许多数学家曾对这种素数进行研究,17 世纪的法国教士马丁·梅森(Martin Mersenne)是其中成果较为卓著的一位,因此后人将“2的n次方减1”形式的素数称为梅森素数。
我们把一个大于1的自然数叫作素数,如果只有1和它本身可以整除它。如果一个比1大的自然数不是素数,我们就叫它合数。1既不是素数,也不是合数。
比如说,你很容易就可以验证7是一个素数;而15是一个合数,因为除了1和15外,3和5都可以整除15。根据定义,2是一个素数,它是唯一的偶素数。早在公元前三百年的古希腊时代,伟大的数学家欧几里德就证明了存在着无穷多个素数。
关于素数,有许多既简单又美丽,但是极为困难的,到现在还没有答案的问题。其中有著名的哥德巴赫猜想,它是说任何一个大于6的偶数,都能表示为两个奇素数之和。还有孪生素数问题。象5和7,41和43这样相差2的素数对,被称为孪生素数。孪生素数问题是说:是不是有无穷多对孪生素数?这里要顺便提一下的是,这些看起来很简单的数学问题,它们的解决方法将一定是极其复杂的,需要最先进的数学工具。如果你不是狂妄到认为几百甚至几千年来所有在这些问题上耗费了无数聪明才智的数学家(有许多是非常伟大的)和数学爱好者加起来都不如你聪明,就不要试图用初等方法去解决这些问题,徒费时间和精力。
古希腊人还对另一种数感兴趣。他们将它称为完美数。一个大于1的自然数叫完美数,如果它的所有因子(包括1,但不包括本身)之和等于它本身。比如说6=1+2+3就是最小的完美数,古希腊人把它看作维纳斯也就是爱情的象征。28=1+2+4+7+14是另一个完美数。欧几里德证明了:一个偶数是完美数,当且仅当它具有如下形式:
2p-1(2p-1)
其中2p-1是素数。上面的6和28对应着p=2和3的情况。我们只要找到了一个形如2p-1的素数,也就知道了一个偶完美数;我们只要找到所有形如2p-1的素数,也就找到了所有偶完美数。所以哈吉拉特瓦拉先生不但找到了世界上已知的最大的素数,还找到了世界上已知的最大的偶完美数。嗯,你要问,关于奇完美数又是怎么样的情况?回答是:我们现在连一个奇完美数也没有找到过,我们甚至根本不知道是不是有奇完美数存在。我们只知道,要是有奇完美数存在的话,它一定是非常非常大的!奇完美数是否存在这个问题,也是一个上面所说的既简单又美丽,但是极为困难的著名数学问题。
有很长一段时间人们以为对于所有素数p,
M_p=2p-1
都是素数(注意到要使2p-1是一个素数,p本身必须是一个素数,想一想为什么?)但是在1536年雷吉乌斯(Hudalricus Regius)指出,M_11=211-1=2047=23*89不是素数。
皮特罗·卡塔尔迪(Pietro Cataldi)首先对这类数进行了系统的研究。他在1603年宣布的结果中说,对于p=17,19,23,29,31和37,2p-1是素数。但是1640年费尔马使用著名的费尔马小定理(不要和那个费尔马大定理混淆起来)证明了卡塔尔迪关于p=23和37的结果是错误的,欧拉在1738年证明了p=29的结果也是错的,过后他又证明了关于p=31的结论是正确的。值得指出的是,卡塔尔迪是用手工一个一个验算取得他的结论的;而费尔马和欧拉则是使用了在他们那时最先进的数学知识,避免了许多复杂的计算和因此可能造成的错误。
法国神父梅森(Marin Mersenne)在1644年他发表了他的成果。他宣称对于p=2,3,5,7,13,17,19,31,67,127和257,2p-1都是素数,而对于其它小于257的素数p,2p-1都是合数。今天我们把形如M_p=2p-1的素数叫做梅森素数,M_p中的M就是梅森姓氏的第一个字母。
用手工来判断一个很大的数是否素数是相当困难的,梅森神父自己也承认他的计算并不一定准确。一直要等到一个世纪以后,在1750年,欧拉宣布说找到了梅森神父的错误:M_41和M_47也是素数。可是伟大如欧拉也会犯计算错误——事实上M_41和M_47都不是素数。不过这可不是说梅森神父的结果就是对的。要等到1883年,也就是梅森神父的结果宣布了两百多年后,第一个错误才被发现:M_61是一个素数。然后其它四个错误也被找了出来:M_67和M_257不是素数,而M_89和M_107是素数。直到1947年,对于p<=257的梅森素数M_p的正确结果才被确定,也就是当p=2,3,5,7,13,17,19,31,61,89,107和127时,M_p是素数。现在这个表已经被反复验证,一定不会有错误了。
第19——43个梅森素数
序号
素数
位数
发现人
时间
43
42
41
|
230402457-1
225964951-1
224036583-1
|
9152052
7816230
7235733
|
Curtis Cooper&Steven Bonne
Martin Nowak
John Findley
|
2005
2005
2004
|
40 |
220996011-1 |
6320430 |
Michael Shafer |
2003 |
39 |
213466917-1 |
4053946 |
Michael Cameron |
2001 |
38 |
26972593-1 |
2098960 |
Nayan, Woltman, Kurowski |
1999 |
37 |
23021377-1 |
909526 |
Clarkson, Woltman, Kurowski |
1998 |
36 |
22976221-1 |
895932 |
Spence, Woltman |
1997 |
35 |
21398269-1 |
420921 |
Armengaud, Woltman |
1996 |
34 |
21257787-1 |
378632 |
Slowinski & Gage |
1996 |
33 |
2859433-1 |
258716 |
Slowinski & Gage |
1994 |
32 |
2756839-1 |
227832 |
Slowinski & Gage |
1992 |
31 |
2216091-1 |
65050 |
David Slowinski |
1985 |
30 |
2132049-1 |
39751 |
David Slowinski |
1983 |
29 |
2110503-1 |
33265 |
Welsh & Colquitt |
1988 |
28 |
286243-1 |
25962 |
David Slowinski |
1982 |
27 |
244497-1 |
13395 |
Slowinski & Nelson |
1979 |
26 |
223209-1 |
6987 |
L. Curt Noll |
1979 |
25 |
221701-1 |
6533 |
Nickel & Noll |
1978 |
24 |
219937-1 |
6002 |
Bryant Tuckerman |
1971 |
23 |
211213-1 |
3376 |
Donald B. Gillies |
1963 |
22 |
29941-1 |
2993 |
Donald B. Gillies |
1963 |
21 |
29689-1 |
2917 |
Donald B. Gillies |
1963 |
20 |
24423-1 |
1332 |
Alexander Hurwitz |
1961 |
19 |
24253-1 |
1281 |
Alexander Hurwitz |
1961 |
1995 年,美国程序设计师乔治·沃特曼整理有关梅森素数的资料,编制了一个梅森素数计算程序,并将其放置在因特网上供数学爱好者使用,这就是“因特 网梅森素数大搜索”计划。目前有6万多名志愿者、超过20万台计算机参与这项计划。该计划采取分布式计算方式,利用大量普通计算机的闲置时间,获得相当于 超级计算机的运算能力,第 37、38 和 39 个梅森素数都是用这种方法找到的。美国一家基金会还专门设立了 10 万美元的奖金,鼓励第一个找到超过千万位素数的人。
十万美元的悬赏——互联网梅森素数大搜索
素数或叫质数,大家并不陌生,但你知道的最大的素数是多少呢?此次获得第43个梅森素数的美国中密苏里州立大学的柯蒂斯·库珀和史蒂文·布诺两位教授介绍说,他们是借助于大约700台电脑经过长期联合计算才获得了这一结果,这大概相当于一台普通电脑连续计算上4500年的运算量。
它有9152052位,如果以2000个数字一页的话要大概2140多页才能显示完。不过,不用担心,这个素数正是一个梅森素数。可以表示为2的30402457次方减一。
早在公元前300年的古希腊时代,伟大的数学家欧几里德就证明了存在着无穷多个素数。之后的2000多年以来,诞生了许多围绕素数的美妙数学问题,例如有数学皇冠上的明珠之称的歌德巴赫猜想:任何一个大于6的偶数都能表示为两个奇素数之和。1644年,法国神父梅森(Marin
Mersenne)发表了一个关于形式为2的p次方减1的数与素数的关系的结论,尽管之中有些错误,但是如今我们还是将这类形式的素数按照他的名字命名为梅森素数。
1995年,一个名叫乔治·沃特曼的程序设计师编制了一个梅森素数寻找程序,并把它放在网要上供数学爱好免费使用。这就是“互联网梅森素数大搜索(GIMPS)”计划。而借助于近年来开始流行的网上分布式计算,即将一个具有庞大计算量的问题分解成若干个小部分通过网络交由许多计算机进行处理,最后再汇总结果的方式,参加GIMPS的队伍逐渐庞大起来。2004年5月30日,一位美国人发现了第41个梅森素数,即2的24036583次方减1;2005年2月18日,一名德国眼科医生则发现了第42个梅森素数,2的25964951次方减1,它有着7816230位。
怎么样,你是否对这样的大搜索也感兴趣呢?那就去www.mersenne.org网站上下载个程序,加入这个队伍吧!发现素数可是有奖的哦!
相关链接十万美元的悬赏——互联网梅森素数大搜索
寻找更大的素数
为什么要寻找梅森素数?为什么要打破已知最大素数的纪录?这有什么用处呢?
如果你所说的用处是指能够直接创造物质财富,那么我不得不告诉你——梅森素数没有什么用处,多知道一个非常大的素数似乎也没什么用处。即使我们知道了一个无比巨大的梅森素数,也不会使我们的钱包增加一分钱(嗨等一等!如果你只对钱感兴趣的话,也请不要立刻撇下我的文章。我其实是说,我上面说的话要排除我在这篇文章题目中提到的那十万美元的奖金——你的钱包也许会因此鼓起来的。所以请耐心一点)。
但是人类并不只需要物质财富。博物馆里的钻石有什么用场呢?为什么人类要收集它们?因为它们美丽而稀少。作为人类智慧的结晶,素数、梅森素数和与它密切相关的完美数是非常美丽的。它们的定义简单,却又如此神秘莫测,象欧几里德、笛卡尔、费尔马、莱布尼兹、欧拉这样的伟大数学家都因为它们的美丽而对它作过大量研究;大家也看到,两千多年来,经过无数代人的辛勤工作,我们一共只收集到38个梅森素数,它们是非常稀少的。对于数学家来说,搜集素数、梅森素数和完美数是和收集钻石一样富有乐趣的事情。
人类还需要荣耀——也许更胜于财富。在体育运动中,能够跑得更快一点,跳得更高一点,难道真的有实际物质方面的用途吗?不,我们喜欢接受挑战,我们希望能赢。打破一个体育世界记录,攀登珠穆朗玛峰,驾船横穿太平洋……,那是对人类体能极限的挑战;而寻找更大的素数,则是一项对人类智慧的挑战。当我们完成了一项前所未有的任务时,我们总会感到无比骄傲。1963年,当第23个梅森素数被找到时,发现它的美国伊利诺斯大学数学系是如此地骄傲,以致于把所有从系里发出的信件都敲上了“211213-1是个素数”的邮戳。
在欧拉证明M_31是素数以后,下一个最大素数的记录由兰德里(Landry)于1867年获得:M_59/179951=3203431780337。这不是一个梅森素数。这个记录保持了九年。
1876年爱德华·卢卡斯使用了一个比费尔马和欧拉的方法更先进的手段,证明了M_127是一个素数。这个记录保持了七十五年。直到费里叶(Ferrier)于1951年使用一部手摇计算机证明了(2148+1)/17是一个素数,它有41位数。
借助手摇计算机的方法要算作手工计算方法还是要算做计算机方法,大概是可以探讨的问题。不过技术的发展一下子把这种争论变得毫无必要。值得指出的是,在人类寻找大素数的旅途中,数学理论的改善要远远比具有强大坚韧的计算能力重要得多。卢卡斯的方法在1930年被勒梅(Lehmer)简化后,卢卡斯-勒梅测试成为现在寻找梅森素数的标准方法。
(卢卡斯-勒梅测试:对于所有大于1的奇数p,M_p是素数当且仅当M_p整除S(p-1),其中S(n)由S(n+1)=S(n)2-2,S(1)=4递归定义。这个测试尤其适合于计算机运算,因为除以M_p=2p-1的运算在二进制下可以简单地用计算机特别擅长的移位和加法操作来实现。判断一个梅森数是素数的方法比判断一个差不多大小的其他类型数是素数的方法要简单得多,所以在寻找最大素数的过程中,大部分纪录都是梅森素数。)
在1951年米勒和维勒(Miller & Wheeler)借助于EDSAC计算机(这种计算机还不如我们现在使用的一般计算器,它只有5K的内存)发现了长达79位的素数180(M_127)2+1。这个记录还是没能保持多久。次年罗宾逊应用SWAC计算机,在1952年初发现了第13和第14号梅森素数:M_521和M_607,后面连续三个梅森素数也在同一年被陆续发现:M_1279,M_2203和M_2281。
在那以后的年代里,为了打破巨大素数纪录而使用的计算机越来越强大,其中有著名的IBM360型计算机,和超级计算机Cray系列。大家可以参看上面的梅森素数表来了解这个竞赛过程。在此其间只有一次一个不是梅森素数的素数坐上过“已知最大素数”的宝座,它是39158*2216193-1,在1989年被发现。1996年发现的M_1257787是迄今为止最后一个由超级计算机发现的梅森素数,数学家使用了Cray T94。
然后,GIMPS的时代到来了。
GIMPS——互联网梅森素数大搜索
1995年程序设计师乔治·沃特曼(George Woltman)开始收集整理有关梅森素数计算的数据。他编制了一个梅森素数寻找程序并把它放在网页上供数学爱好者免费使用。这就是“互联网梅森素数大搜索”计划(GIMPS,the Great Internet Mersenne Prime Search)。在这个计划中,十几位数学专家和几千名数学爱好者正在寻找下一个最大的梅森素数,并且检查以前梅森素数纪录之间未被探索的空隙。比如上面的梅森素数表中,最后那个素数的序号是未知的,我们不知道第37号梅森素数和它之间是否还存在着其他未被发现的梅森素数。
1997年斯科特·库尔沃斯基(Scott Kurowski)和其他人建立了“素数网”(PrimeNet),使分配搜索区间和向GIMPS发送报告自动化。现在只要你去GIMPS的主页下载那个免费程序,你就可以立刻参加GIMPS计划搜寻梅森素数。几乎所有的常用计算机平台都有可用的版本。程序以最低的优先度在你的计算机上运行,所以对你平时正常地使用计算机几乎没有影响。程序也可以随时被停止,下一次启动时它将从停止的地方继续进行计算。
从1996年到1998年,GIMPS计划发现了三个梅森素数:M_1398269、M_2976221和M_3021377,都是使用奔腾型计算机得到的结果。
1999年3月,在互联网上活动的一个协会“电子边界基金”(EFF,Electronic Frontier Foundation)宣布了由一位匿名者资助的为寻找巨大素数而设立的奖金。它规定向第一个找到超过一百万位的素数的个人或机构颁发五万美元的奖金,这就是我们最一开始说到的哈吉拉特瓦拉得到的奖金。后面的奖金依次为:超过一千万位,十万美元;超过一亿位,十五万美元;超过十亿位,二十五万美元。
搜寻结果的验证和奖金的颁发是非常严格的。比如说,得到的结果必须是显式的——你不能宣称你的结果是一个有一百个方程组成的方程组的解,却不把它解出来。结果必须由另一台计算机独立验证。所有这些规则都在EFF网站上进行了解释。
应该指出的是,通过参加GIMPS计划来获得奖金的希望是相当小的。哈吉拉特瓦拉使用的计算机是当时21000台计算机中的一台。每一个参与者都在验证分配给他的不同梅森数,当然其中绝大多数都不是素数——他只有大约三万分之一的可能性碰到一个素数。
下一个十万美元的奖金将被颁发给第一个找到超过一千万位的素数的个人或机构。这一次的计算量将大约相当于上一次的125倍。现在GIMPS得到的计算能力为每秒7000亿次浮点运算,和一台当今最先进的超级矢量计算机,比如Cray T932的运行能力相当。但是如果GIMPS要使用这样的超级计算机,一天就需要支付大约二十万美元。而现在他们需要的费用,只不过是支持网站运行的费用,和总共几十万美元的奖金罢了。
网上分布式计算计划
GIMPS只不过是互联网上众多的分布式计算计划中的一个罢了,GIMPS主页上就有这些计划的介绍。
分布式计算是一门计算机学科,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。有时侯计算量是如此之大,需要全世界成千上万甚至更多台计算机一起工作,才能在合乎情理的时间内得到结果。GIMPS计划就是在进行这样的分布式计算。
但它并不是最著名的分布式计算计划。致力于寻找宇宙中智慧生命的“搜寻地外文明计划”(SETI计划)中的SETI@HOME工程,已在全世界招募了290万名(!)志愿者,利用屏幕保护程序来处理射电望远镜接受到的大量的宇宙间传来的无线电信号。如果你参加这个计划,也许有一天会在你的计算机上破译出外星人发来的问候呢。
你也可以用你的计算机空余的计算能力为人类征服癌症作出贡献。英国科学家设计了类似SETI@HOME工程的分布式计算屏保,它从有关网站下载数据,分析化学物质分子的抗癌性能,然后将分析结果通过互联网传回给研究人员,作为研制新型抗癌药物的参考。这项工程将于2001年4月3日在美国加利福尼亚州正式启动。
计算机硬件的更新令人目不暇接,上半年买的最新式的个人电脑,在下半年就变成了大路货。三四年前的CPU,现在变得一钱不值——也许不能这么说,你根本就买不到它们了——市面上最便宜的CPU也要比它们强大得多。而一台普通的家用计算机连续运转五年也是没有问题的。所以,对待计算机的最经济的态度就是:让它运转。
而人类还有那么多的东西需要计算,还有那么多的问题需要找到回答,还有那么多的难关需要克服。我们需要越来越巨大的计算能力,我们也拥有这样的计算能力,只是太多太多被白白地闲置浪费掉了。互联网已经使大规模的分布式计算计划成为可能。现在,我们唯一需要的,就是这个网上每一个结点上计算机用户的意愿和信心了。
相关推荐
**质数**(或称为素数)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的数。质数是数论中的基本概念之一,在密码学、计算机科学以及其他数学领域都有着广泛的应用。 #### 二、1亿以内质数的数量 根据...
标题 "50000000(五千万)以内质数(素数)3001134(约三百万)个.zip" 暗示了这个压缩包包含了一个文本文件,列出了从1到50,000,000之间所有约300万个质数。描述中的 "普通pc演算(i7处理器)" 表明这些质数是通过一台搭载...
这里我们关注的是一个名为“求解第N个质数(第N个素数)vs2010项目”的项目,该项目使用了Visual Studio 2010作为开发环境。这个项目的目标是高效地找到序列中的第N个质数,这里的N可能是任意正整数。项目中采用的...
在IT领域,尤其是在移动应用开发中,开发一个用于显示质数和素数的数学工具的手机APP是一项常见的任务。这个Android项目源码提供了一个这样的工具,帮助用户理解和探索这两个重要的数学概念。以下是对这个项目的详细...
在编程领域,素数或质数是指大于1且仅能被1和其本身整除的自然数。在Java中实现打印素数的程序是一项基础但重要的任务,这有助于理解和掌握循环、条件判断以及数学逻辑在编程中的应用。下面将详细解释如何通过Java...
素数(Prime Number),又称质数,是只能被1和自身整除的大于1的自然数。例如,2、3、5、7等。 #### 判断方法 在代码中,`isPrimer` 函数用于判断一个给定的整数 `n` 是否为素数。具体步骤如下: - 遍历从1到`n/2`...
素数环,又称为“质数环”,是指一组正整数排列成环状,其中任意相邻两个数之和都是一个质数。这个问题源于数论中的组合构造问题,它要求找到这样的一个环,使得环上的每个元素都是正整数,并且满足特定的条件。在给...
素数,又称质数,是大于1且只有两个正因子(1和自身)的自然数。在数学领域,素数的研究具有重要的理论价值,因为它们是构建所有正整数的基础,就如同基本的积木一样。在给定的标题“14988613以内的素数(质数)表”...
//【程序2】 //题目:判断101-200之间有多少个素数,并输出所有素数。 //程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数), //如果能被整除, 则表明此数不是素数,反之是素数。
### 两百万的素数(质数) #### 知识点概述 在数学领域中,素数(或称质数)是指只能被1和自身整除的大于1的自然数。素数是数论研究中的核心概念之一,在密码学、算法设计及多种科学计算中具有极其重要的作用。...
总之,理解并熟练掌握素数、合数、质数分解、最大公约数和最小公倍数的概念及计算方法,对Java程序员来说是至关重要的。这些基础知识不仅应用于初学者的练习,还常常出现在高级算法和数据结构中,是编程能力提升的...
质数(素数)是数学领域的一个重要概念,指大于1且仅能被1和它自身整除的正整数。在计算机科学中,尤其是在密码学、算法设计和数论等领域,质数计算扮演着至关重要的角色。这篇讨论将聚焦于如何在Delphi编程环境中...
回文质数是一种特殊的素数,它同时具备回文数的特性,即无论从左向右读还是从右向左读都是一样的数字。例如,11、121、1331等都是回文质数。在编程领域,求解一定范围内的回文质数是一项常见的算法挑战,这个挑战...
判断质数 素数的多种方法 在计算机科学中,判断一个数是否为质数是非常重要的一步骤。质数是大于1的自然数,且仅能被1和本身整除。判断质数的方法有多种,本文将对常见的判断质数的方法进行总结和分析。 1. Trial ...
在Android开发领域,创建一个专门显示质数和素数的数学工具是一项技术性强且具有挑战性的任务。这个项目源码的出现,为开发者提供了一个学习和研究的好平台,特别是对于那些对算法和移动应用开发有兴趣的人。下面...
在编程领域,尤其是在数学和算法相关的任务中,我们经常需要处理一些基础的数学问题,比如素数(质数)的判断和操作。本主题聚焦于一个著名的未解决数学猜想——哥德巴赫猜想。这个猜想是由18世纪的普鲁士数学家...
### 100万以内的素数表 #### 知识点概述 本文将详细介绍“100万以内的素数表”的相关知识点,包括素数的基本概念、素数的重要性以及如何生成和应用素数表等内容。 #### 素数的基本概念 **素数**(Prime Number)指...
在编程领域,质数(素数)是计算机科学中的一个重要概念,特别是在算法设计和数论中。质数是指大于1且只有1和其本身两个正因数的自然数。本主题将围绕“cpp”(C++编程语言)来讨论如何高效地判断一个数是否为质数,...
自定义函数求素数(质数).py
素数(prime number)又称质数,有无限个。除了1和它本身外,不能被其他自然数整除。换句话说就是该数除了1和它本身以外不再有其他的因数的数。 注意:最小的素数是2。 话不多说,上代码! prime=[] #用一个列表来存储...