從俠客島談起
這事從金庸的小說《俠客行》為比喻說起大概最恰當了.
俠客島,原來被認為是一個無人生還的危險去處份蝴。
我們跟著石破天去了才發(fā)現(xiàn),原來真相是大家看一樣?xùn)|西的角度出了問題澎媒。
島上刻了一首李白的《俠客行》搞乏。這首詩文采意境絕佳,要說里面藏了絕世神功戒努,想當然得從文字上入手了请敦。30年來各路高手都這么一致認定了。結(jié)果是沒有一個人破解得了储玫。
恰恰是石破天一看就看出道道來了侍筛。那一筆一劃哪里是字?分明畫的都是劍招嘛撒穷!當然石破天的優(yōu)勢在于匣椰,他正好是文盲,不會被文字的外表誘惑并誤導(dǎo)端礼。
好了禽笑,現(xiàn)在來講講圣經(jīng)。
在美國的這么多年里蛤奥,我換過許多城市佳镜,住過許多地方。
有一道不變的風(fēng)景是凡桥,無論身在何處蟀伸,總會有一些虔誠的教徒敲到家門,發(fā)一張傳單缅刽,希望引渡我入教啊掏。(我稱他們?yōu)楦鏖T各派的圣教徒們。到美國之前衰猛,我從沒想到原來基督教如此分裂迟蜜,此中門派如此眾多。光是教眾在25萬以上的各大派別就有35家)
每次我都以文化差異為理由拒絕啡省。一方面娜睛,圣經(jīng)(無論舊約新約),早就在我的書單里被列為死刑——這是一本我以為寫得既咯牙也很難讀通的書冕杠。另一方面,在外行的我眼中酸茴,這些上門游說的說客們千篇一律分预,他們熱情并機械地復(fù)述著類似的語言,然后告訴你:
Start to pray, and you will see the difference.
我確實看到了效果薪捍,更加不敢靠近笼痹。
直到最近兩年另一些書讓我看到了圣經(jīng)的另一面配喳。
我以為圣經(jīng)是一本教人信仰上帝的書,沒想到有人說它其實是一本隱藏得很好的加了密鑰的書凳干。Kaballa一派認為舊約的大部分都是編了密碼的晴裹,因此它很多時候看上去前言不搭后語、邏輯混亂救赐。他們認定一旦被破譯涧团,一切都會順理成章。
且不論這到底是神秘學(xué)经磅、牽強附會還是事實泌绣,但是至少在我看來圣經(jīng)變得有點意思了,至少挑起了我這么個文科背景的人對數(shù)字的興趣预厌。據(jù)說圣經(jīng)里面如果用的一個數(shù)字不能被100整除阿迈,一定是因為這個數(shù)字很獨特。
完美的數(shù)字
圣經(jīng)里寫了上帝用六天的時間創(chuàng)造了世界轧叽。
為什么是六天苗沧?不是一天,不是五天炭晒,也不是七天待逞?(啊 啊 啊 六天 你比五天多一天;啊 啊 啊 六天 你比七天少一天)
這是個嚴肅的問題腰埂。而神學(xué)家們也給了一個非常嚴肅的回答:
因為6很完美飒焦。6是第一個完美數(shù)(Perfect numbers)。
引自維基百科:
完美數(shù)屿笼,又稱完全數(shù)牺荠、完備數(shù)。如果一個數(shù)字的真約數(shù)(除去該數(shù)字本身的其他約數(shù))之和等于它本身驴一,這個數(shù)就是完美數(shù)休雌。第一個完美數(shù)是6,它有約數(shù)1肝断、2杈曲、3、6胸懈,除去6外担扑,其余3個數(shù)相加,1+2+3=6趣钱。
請注意涌献,這里的因果關(guān)系是,因為6是完美數(shù)首有,所以上帝用六天創(chuàng)造世界燕垃。這個關(guān)系反過來是不成立的枢劝。
這也不是我說的,而是基督教徒奧古斯丁在公元五世紀的拉丁文著作《上帝之城》第11部分30章里面反復(fù)強調(diào)的:
Six is a number perfect in itself, and not because God created all things in six days; rather the inverse is true; God created all things in six days because this number is perfect. And it would remain perfect even if the work of the six days did not exist.
就算沒有上帝六天造物的說法卜壕,6仍然是完美數(shù)您旁。
畢達哥拉斯
完美數(shù)最初是由古希臘數(shù)學(xué)家畢達哥拉斯(Pythagoras)在公元前六世紀定義的。
畢達哥拉斯最為著名的是與勾股定理的關(guān)系轴捎。在西方鹤盒,他被認為是勾股定理的發(fā)明人,所以勾股定理的英文名是 Pythagorean Theorem轮蜕。
除此之外昨悼,Pythagoras的一生十分傳奇。一開始跃洛,他為了打發(fā)寂寞和無聊率触,強迫著收留了一個徒弟。為了誘惑到這個徒弟汇竭,Pythagoras每次教課都要付錢給學(xué)生葱蝗。后來徒弟上鉤了,Pythagoras就裝窮细燎,終于學(xué)生開始付學(xué)費了两曼。
Pythagoras還是一個教派的創(chuàng)始人。
基于對數(shù)學(xué)的獨到研究玻驻,他成立了一個十分神秘的教派悼凑,叫做“畢達哥拉斯兄弟會”(Pythagorean Brotherhood)。
這個兄弟會可以和日月神教相媲美璧瞬。教規(guī)甚嚴户辫。凡是不慎透露該教機密(也就是數(shù)學(xué)上的新發(fā)現(xiàn))的人,無論資歷功績嗤锉,一律處以極刑渔欢。
有一個會員泄露了兄弟會發(fā)現(xiàn)十二面體的重大消息,被淹死了瘟忱。
另一位數(shù)學(xué)家奥额,因為忍不住泄露自己發(fā)現(xiàn)了無理數(shù)這個事實,也被淹死了访诱。
原來那時候從事數(shù)學(xué)研究垫挨,是一項類似仗劍行走江湖的生計,隨時可能抵命触菜。
公元前5世紀九榔,歐幾里得根據(jù)當時已知的前四個完美數(shù)字,猜想每個完美數(shù)可以被分解為:
2(n-1)(2n-1)
天知道他是怎么發(fā)現(xiàn)這條規(guī)律的。
但是大家馬上發(fā)現(xiàn)帚屉,這個規(guī)律并不完美。只有在 n為質(zhì)數(shù)(素數(shù))并且2n-1也是質(zhì)數(shù)的時候漾峡,才能讓方程所產(chǎn)生的數(shù)字變成完美數(shù)攻旦。但是n為質(zhì)數(shù),不能保證2n-1也是質(zhì)數(shù)生逸。2牢屋,3,5槽袄,7之后烙无,如果n 變成11,2^n-1就不再是質(zhì)數(shù)了遍尺。
這么一來截酷,一場尋求完美數(shù)的游戲就變成了一場尋求質(zhì)數(shù)的游戲。
調(diào)皮的質(zhì)數(shù)
然并卵乾戏,人們興趣寥寥迂苛。
數(shù)論長久以來都是最純粹的數(shù)學(xué)研究。理由很簡單鼓择,它是真正的”無用“三幻,不僅不能當飯吃,而且連數(shù)數(shù)有幾粒米飯這種能力都沒有呐能!它不像算術(shù)念搬,能讓阿基米德發(fā)現(xiàn)皇冠里的金子有沒有被工匠偷龍轉(zhuǎn)鳳。
歐幾里得的發(fā)現(xiàn)沉寂了2000多年摆出。直到17世紀朗徊,一個本來熱衷于研究神學(xué)和音樂的天主教徒突然又撿起了歐幾里得的那個猜想。
這個神學(xué)家是法國天主教徒梅森懊蒸。他被譽為17世紀上半葉數(shù)學(xué)與科學(xué)的世界中心荣倾。為什么呢?因為當時的大牛們骑丸,隨便拎出一個來舌仍,比如笛卡爾、費馬通危、伽利略等等铸豁,都和梅森交從甚密【盏可以說节芥,在那個沒有互聯(lián)網(wǎng)的時代,梅森就是一個人體互聯(lián)網(wǎng)。
梅森開始研究2^n-1在什么情況下才會成為質(zhì)數(shù)头镊。他公布了一系列滿足這一條件的n蚣驼,當然有對的也有錯的,實際上相艇,他宣布的數(shù)字里颖杏,n 大于31之后,就全錯了坛芽。
盡管如此留储,后世依然把2^n-1產(chǎn)生的質(zhì)數(shù)成為”梅森素數(shù)“——畢竟,若不是梅森咙轩,還不知道要過多少個千年获讳,人們才會再次注意到歐幾里得那個關(guān)于完美數(shù)的猜想。
有用 VS 無用
發(fā)現(xiàn)一個新的質(zhì)數(shù)或者一個新的梅森素數(shù)活喊,對現(xiàn)實世界的影響曾經(jīng)是零丐膝、零、零钾菊。
然而到了計算機時代尤误,我們都在不知不覺使用著質(zhì)數(shù)。而質(zhì)數(shù)之所以有用结缚,就是因為它太調(diào)皮损晤,太無章法可循。
RSA加密算法利用了質(zhì)數(shù)红竭。好比我的密碼是一個質(zhì)數(shù)(想象成一把鎖)尤勋,我把一段信息加密了(盒子上了一把鎖),然后發(fā)給你茵宪。你在此基礎(chǔ)上再加上你的那把鎖最冰,然后把帶了兩把鎖的盒子公布于世(就是兩個質(zhì)數(shù)相乘的公鑰)。那么你我任何一方自然可以根據(jù)公鑰和各自的私鑰稀火,解開雙重加密的信息(開鎖順序無關(guān)緊要)暖哨,而第三人要從公鑰,推算出那兩個質(zhì)數(shù)(兩把鎖的鑰匙)凰狞,要花一定時間篇裁。正是這個時間差確保了我們在網(wǎng)上信息交流的安全性。
當然赡若,作為密碼的質(zhì)數(shù)越大达布,安全性能越好。
1977年逾冬,Martin Gardner 寫了一篇關(guān)于 RSA 的論文黍聂,題為”一種需要百萬年才能被破譯的新編碼“躺苦。同事,他發(fā)布了一個 RSA公鑰产还,這個數(shù)字有10^129位數(shù)那么長匹厘。
一直過了17年,這個公鑰才終于被破解脐区,而且集結(jié)了來自全球各地600個志愿者的力量集乔,以及他們的計算機的力量。
盡管如此坡椒,Gardner 還是高估了 RSA 的安全性,低估了計算機的發(fā)展速度∮攘铮現(xiàn)在他當年公布的公鑰倔叼,說不定一個業(yè)余黑客不用幾個月時間就可以破解。
另一個用到梅森素數(shù)的是隨機數(shù)產(chǎn)生法宫莱,又叫做梅森旋轉(zhuǎn)算法丈攒,被應(yīng)用于各種編程語言。也就是說授霸,基本上很多時候我們要求程序隨機產(chǎn)生一些東西時巡验,比如隨機選擇一個開機畫面,都用到了梅森素數(shù)碘耳。
引自維基百科:
梅森旋轉(zhuǎn)算法是R显设、Python、Ruby辛辨、IDL捕捂、Free Pascal、PHP斗搞、Maple指攒、Matlab、GNU多重精度運算庫和GSL的默認偽隨機數(shù)產(chǎn)生器僻焚。從C++11開始允悦,C++也可以使用這種算法。
(不知不覺快寫到4個六的點了虑啤,太困了……未完隙弛,有機會待續(xù))