十萬美元的懸賞——互聯網梅森素數大搜索

一、價值五萬美元的素數

  2000年4月6日,住在美國密歇根州普利茅茨的那揚·哈吉拉特瓦拉(Nayan Hajratwala)先生得到了一筆五萬美元的數學獎金,因爲他找到了迄今爲止已知的最大素數,這是一個梅森素數:

       26972593-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是另一個完美數。歐幾里德證明了:一個偶數是完美數,當且僅當它具有如下形式:

     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是素數。現在這個表已經被反覆驗證,一定不會有錯誤了。

  下面是我們現在知道的所有梅森素數的列表:(我們注意到梅森神父的名字不在上面——這種素數已經由他的名字命名了,就把榮譽分給最後確認者吧。)

序號 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
?? 6972593 2098960 4197919 1999 GIMPS

  是不是有無窮多個梅森素數呢?數學家們目前還無法回答這個問題。

三、尋找更大的素數

  爲什麼要尋找梅森素數?爲什麼要打破已知最大素數的紀錄?這有什麼用處呢?

  如果你所說的用處是指能夠直接創造物質財富,那麼我不得不告訴你——梅森素數沒有什麼用處,多知道一個非常大的素數似乎也沒什麼用處。即使我們知道了一個無比巨大的梅森素數,也不會使我們的錢包增加一分錢(嗨等一等!如果你只對錢感興趣的話,也請不要立刻撇下我的文章。我其實是說,我上面說的話要排除我在這篇文章題目中提到的那十萬美元的獎金——你的錢包也許會因此鼓起來的。所以請耐心一點)。

  但是人類並不只需要物質財富。博物館裏的鑽石有什麼用場呢?爲什麼人類要收集它們?因爲它們美麗而稀少。作爲人類智慧的結晶,素數、梅森素數和與它密切相關的完美數是非常美麗的。它們的定義簡單,卻又如此神祕莫測,象歐幾里德、笛卡爾、費爾馬、萊布尼茲、歐拉這樣的偉大數學家都因爲它們的美麗而對它作過大量研究;大家也看到,兩千多年來,經過無數代人的辛勤工作,我們一共只收集到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也要比它們強大得多。而一臺普通的家用計算機連續運轉五年也是沒有問題的。所以,對待計算機的最經濟的態度就是:讓它運轉。

  而人類還有那麼多的東西需要計算,還有那麼多的問題需要找到回答,還有那麼多的難關需要克服。我們需要越來越巨大的計算能力,我們也擁有這樣的計算能力,只是太多太多被白白地閒置浪費掉了。互聯網已經使大規模的分佈式計算計劃成爲可能。現在,我們唯一需要的,就是這個網上每一個結點上計算機用戶的意願和信心了。

  全世界的計算機聯合起來!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章