梅森素數--美麗的貝殼
一、價值五萬美元的素數? ?2000年4月6日,住在美國密歇根州普利茅茨的那揚·哈吉拉特瓦
拉(Nayan Hajratwala)先生得到了一筆五萬美元的數學獎金,因為他
找到了迄今為止已知的最大素數,這是一個梅森素數:
? ? ? ? ? ? ? ? ? ? 2^6972593-1。
這也是我們知道的第一個位數超過一百萬位的素數。精確地講,如果
把這個素數寫成我們熟悉的十進制形式的話,它共有兩百零九萬八千
九百六十位數字,如果把它以這個形式寫下來,大約需要150到200篇
本文的篇幅。
? ?可是哈吉拉特瓦拉先生并不是一個數學家,他甚至很可能對尋找
素數的數學理論一無所知——雖然這使他贏得了這筆獎金。他所做的
一切,就是從互聯網上下載了一個程序。這個程序在他不使用他的奔
騰II350型計算機時悄悄地運行。在經過111天的計算后,上面所說的
這個素數被發現了。
二、梅森素數
? ?我們把一個大于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是另一個完美數。歐幾里德證
明了:一個偶數是完美數,當且僅當它具有如下形式:
? ? ? ? ? ? ? ? ? ?2^(p-1)(2^p-1)
其中2^p-1是素數。上面的6和28對應著p=2和3的情況。我們只要找到
了一個形如2^p-1的素數,也就知道了一個偶完美數;我們只要找到所
有形如2^p-1的素數,也就找到了所有偶完美數。所以哈吉拉特瓦拉先
生不但找到了世界上已知的最大的素數,還找到了世界上已知的最大
的偶完美數。嗯,你要問,關于奇完美數又是怎么樣的情況?回答是:
我們現在連一個奇完美數也沒有找到過,我們甚至根本不知道是不是
有奇完美數存在。我們只知道,要是有奇完美數存在的話,它一定是
非常非常大的!奇完美數是否存在這個問題,也是一個上面所說的既
簡單又美麗,但是極為困難的著名數學問題。
? ?有很長一段時間人們以為對于所有素數p,
? ? ? ? ? ? ? ? ? ? ? ?M_p=2^p-1 ?
都是素數(注意到要使2^p-1是一個素數,p本身必須是一個素數,想
一想為什么?)但是在1536年雷吉烏斯(Hudalricus Regius)指出,
M_11=2^11-1=2047=23*89不是素數。
? ?皮特羅·卡塔爾迪(Pietro Cataldi)首先對這類數進行了系統的
研究。他在1603年宣布的結果中說,對于p=17,19,23,29,31和37,
2^p-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,2^p-1都是
素數,而對于其它小于257的素數p,2^p-1都是合數。今天我們把形如
M_p=2^p-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是素數。現在這個表已經被反復驗證,一定不會有錯誤了。
? ?下面是我們現在知道的所有梅森素數的列表:(我們注意到梅森
神父的名字不在上面——這種素數已經由他的名字命名了,就把榮譽
分給最后確認者吧。)
序號 ? p ? ? ? ? ? M_p的位數 ? ?相對應的 ? 確認 ? ? ?確認人
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 完美數的 ? 年代
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 位數
1 ? ? ? ? ? ?2 ? ? ? ? ? ?1 ? ? ? ? ? ?1 ? ? ?---- ? ? ?----
2 ? ? ? ? ? ?3 ? ? ? ? ? ?1 ? ? ? ? ? ?2 ? ? ?---- ? ? ?----
3 ? ? ? ? ? ?5 ? ? ? ? ? ?2 ? ? ? ? ? ?3 ? ? ?---- ? ? ?----
4 ? ? ? ? ? ?7 ? ? ? ? ? ?3 ? ? ? ? ? ?4 ? ? ?---- ? ? ?----
5 ? ? ? ? ? 13 ? ? ? ? ? ?4 ? ? ? ? ? ?8 ? ? ?1456 ? ? ?佚名
6 ? ? ? ? ? 17 ? ? ? ? ? ?6 ? ? ? ? ? 10 ? ? ?1588 ? ? ?Cataldi
7 ? ? ? ? ? 19 ? ? ? ? ? ?6 ? ? ? ? ? 12 ? ? ?1588 ? ? ?Cataldi
8 ? ? ? ? ? 31 ? ? ? ? ? 10 ? ? ? ? ? 19 ? ? ?1772 ? ? ?Euler
9 ? ? ? ? ? 61 ? ? ? ? ? 19 ? ? ? ? ? 37 ? ? ?1883 ? ? ?Pervushin
10 ? ? ? ? ?89 ? ? ? ? ? 27 ? ? ? ? ? 54 ? ? ?1911 ? ? ?Powers
11 ? ? ? ? 107 ? ? ? ? ? 33 ? ? ? ? ? 65 ? ? ?1914 ? ? ?Powers
12 ? ? ? ? 127 ? ? ? ? ? 39 ? ? ? ? ? 77 ? ? ?1876 ? ? ?Lucas
13 ? ? ? ? 521 ? ? ? ? ?157 ? ? ? ? ?314 ? ? ?1952 ? ? ?Robinson
14 ? ? ? ? 607 ? ? ? ? ?183 ? ? ? ? ?366 ? ? ?1952 ? ? ?Robinson
15 ? ? ? ?1279 ? ? ? ? ?386 ? ? ? ? ?770 ? ? ?1952 ? ? ?Robinson
16 ? ? ? ?2203 ? ? ? ? ?664 ? ? ? ? 1327 ? ? ?1952 ? ? ?Robinson
17 ? ? ? ?2281 ? ? ? ? ?687 ? ? ? ? 1373 ? ? ?1952 ? ? ?Robinson
18 ? ? ? ?3217 ? ? ? ? ?969 ? ? ? ? 1937 ? ? ?1957 ? ? ?Riesel
19 ? ? ? ?4253 ? ? ? ? 1281 ? ? ? ? 2561 ? ? ?1961 ? ? ?Hurwitz
20 ? ? ? ?4423 ? ? ? ? 1332 ? ? ? ? 2663 ? ? ?1961 ? ? ?Hurwitz
21 ? ? ? ?9689 ? ? ? ? 2917 ? ? ? ? 5834 ? ? ?1963 ? ? ?Gillies
22 ? ? ? ?9941 ? ? ? ? 2993 ? ? ? ? 5985 ? ? ?1963 ? ? ?Gillies
23 ? ? ? ?11213 ? ? ? ?3376 ? ? ? ? 6751 ? ? ?1963 ? ? ?Gillies
24 ? ? ? ?19937 ? ? ? ?6002 ? ? ? ?12003 ? ? ?1971 ? ? ?Tuckerman
25 ? ? ? ?21701 ? ? ? ?6533 ? ? ? ?13066 ? ? ?1978 ? ? ?Noll & Nickel
26 ? ? ? ?23209 ? ? ? ?6987 ? ? ? ?13973 ? ? ?1979 ? ? ?Noll
27 ? ? ? ?44497 ? ? ? 13395 ? ? ? ?26790 ? ? ?1979 ? ? ?Nelson & Slowinski
28 ? ? ? ?86243 ? ? ? 25962 ? ? ? ?51924 ? ? ?1982 ? ? ?Slowinski
29 ? ? ? 110503 ? ? ? 33265 ? ? ? ?66530 ? ? ?1988 ? ? ?Colquitt & Welsh
30 ? ? ? 132049 ? ? ? 39751 ? ? ? ?79502 ? ? ?1983 ? ? ?Slowinski
31 ? ? ? 216091 ? ? ? 65050 ? ? ? 130100 ? ? ?1985 ? ? ?Slowinski
32 ? ? ? 756839 ? ? ?227832 ? ? ? 455663 ? ? ?1992 ? ? ?Slowinski & Gage
33 ? ? ? 859433 ? ? ?258716 ? ? ? 517430 ? ? ?1994 ? ? ?Slowinski & Gage
34 ? ? ?1257787 ? ? ?378632 ? ? ? 757263 ? ? ?1996 ? ? ?Slowinski & Gage
35 ? ? ?1398269 ? ? ?420921 ? ? ? 841842 ? ? ?1996 ? ? ?GIMPS
36 ? ? ?2976221 ? ? ?895932 ? ? ?1791864 ? ? ?1997 ? ? ?GIMPS
37 ? ? ?3021377 ? ? ?909526 ? ? ?1819050 ? ? ?1998 ? ? ?GIMPS
38 ? ? 6972593 ? ? 2098960 ? ? ?4197919 ? ? ?1999 ? ? ?GIMPS
39 ? ?13466917 ? 4053947
40 20996011 ?6320431
41 ? ?24036583 ?7235734
42 ? ? 25964951 ? 7816230 ? ? ? ? ? ? ? ? ? ? ? ? ? 2005
? ?是不是有無窮多個梅森素數呢?數學家們目前還無法回答這個問
題。
三、尋找更大的素數
? ?為什么要尋找梅森素數?為什么要打破已知最大素數的紀錄?這
有什么用處呢?
? ?如果你所說的用處是指能夠直接創造物質財富,那么我不得不告
訴你——梅森素數沒有什么用處,多知道一個非常大的素數似乎也沒
什么用處。即使我們知道了一個無比巨大的梅森素數,也不會使我們
的錢包增加一分錢(嗨等一等!如果你只對錢感興趣的話,也請不要
立刻撇下我的文章。我其實是說,我上面說的話要排除我在這篇文章
題目中提到的那十萬美元的獎金——你的錢包也許會因此鼓起來的。
所以請耐心一點)。
? ?但是人類并不只需要物質財富。博物館里的鉆石有什么用場呢?
為什么人類要收集它們?因為它們美麗而稀少。作為人類智慧的結晶,
素數、梅森素數和與它密切相關的完美數是非常美麗的。它們的定義
簡單,卻又如此神秘莫測,象歐幾里德、笛卡爾、費爾馬、萊布尼茲、
歐拉這樣的偉大數學家都因為它們的美麗而對它作過大量研究;大家
也看到,兩千多年來,經過無數代人的辛勤工作,我們一共只收集到
38個梅森素數,它們是非常稀少的。對于數學家來說,搜集素數、梅
森素數和完美數是和收集鉆石一樣富有樂趣的事情。
? ?人類還需要榮耀——也許更勝于財富。在體育運動中,能夠跑得
更快一點,跳得更高一點,難道真的有實際物質方面的用途嗎?不,
我們喜歡接受挑戰,我們希望能贏。打破一個體育世界記錄,攀登珠
穆朗瑪峰,單身駕船橫穿太平洋……,那是對人類體能極限的挑戰;而尋
找更大的素數,則是一項對人類智慧的挑戰。當我們完成了一項前所
未有的任務時,我們總會感到無比驕傲。1963年,當第23個梅森素數
被找到時,發現它的美國伊利諾斯大學數學系是如此地驕傲,以致于
把所有從系里發出的信件都敲上了“2^11213-1是個素數”的郵戳。
? ?在歐拉證明M_31是素數以后,下一個最大素數的記錄由蘭德里
(Landry)于1867年獲得:M_59/179951=3203431780337。這不是一個梅
森素數。這個記錄保持了九年。
? ?1876年愛德華·盧卡斯使用了一個比費爾馬和歐拉的方法更先進
的手段,證明了M_127是一個素數。這個記錄保持了七十五年。直到費
里葉(Ferrier)于1951年使用一部手搖計算機證明了(2^148+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遞歸定義。
4 ?14 194 ?37634 ?1416317954 2005956546822746114
這個測
試尤其適合于計算機運算,因為除以M_p=2^p-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*2^216193-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也
要比它們強大得多。而一臺普通的家用計算機連續運轉五年也是沒有
問題的。所以,對待計算機的最經濟的態度就是:讓它運轉。
? ?而人類還有那么多的東西需要計算,還有那么多的問題需要找到
回答,還有那么多的難關需要克服。我們需要越來越巨大的計算能力,
我們也擁有這樣的計算能力,只是太多太多被白白地閑置浪費掉了。
互聯網已經使大規模的分布式計算計劃成為可能。現在,我們唯一需
要的,就是這個網每一個結點上計算機用戶的意愿和信心了。