1.
密碼學涉及到將需要保密的資訊打亂,使得只有接受者才能整
理出它們,而別的任何可能
截獲它們的
人都無法整理出它們。這種打亂的過程需要使用保密的密碼本,而整理這些資訊按管理只需
要接收者反過來使用密
碼本就行了。在這個程式中,密碼本是保密環節中最薄弱的一環。首先,接收者和發
送者必須約定密碼
本的詳細內容,而這種資訊的交流是乙個有洩密風險的過程。如果敵方能截獲正在交流的密
碼本,那麼
他們就能譯出此後所有的資訊。其次,為了保持安全性,密碼本必須定期更改,而每一次更改時,都有新的密碼本被截獲的危險。
密碼本的問題圍繞著下面的事實展開:它的使用,一次是打亂資訊,另一次是反
過來整理出資訊
,而整理資訊幾乎與打亂資訊同樣容易。然而,經驗告訴我們,在許多情況中整理要比
打亂困難的多——打碎乙個雞蛋是相對容易的,而重新拼好它則困難的多。
在20世紀70年代,會特菲爾德·迪菲和馬丁·海爾曼提出了這樣的
思想:尋找一種按乙個方向很容易進行,而按相反方向進行則不可思議的困難的數學程式。這種程式將會提供十分完美
的密碼本。舉例
來說,我可以有自己用的、由兩部分組成的密碼本,並且
在公用指南中公開它的用於打亂資訊的那部分。於是,任何人都可以向我傳送打亂過的資訊,但是只有我知道密碼本中用於整理資訊的那一半。雖然人人都了解密碼本中關於打亂資訊的那部分,但是它和密碼本中用來整理資訊的那部分毫無聯絡。
在2023年,麻省理工學院一群數學家和計算機專家羅納德·裡維斯特、愛迪·沙彌和倫納德·阿德李曼認識到素數可能是易打亂/難整理過程的理想的基礎。為了製成我自己的私人密碼本,我會取兩個大素數,每乙個多達80個數字,然後將它們乘起來得到乙個大得多的非素數。為了打亂資訊所需要的一切,就是知道這個大的非素數,它們稱為素因數。現在我可以公開大的非素數,也即密碼本中
打亂資訊的那一半,而自己儲存那兩個素因
數,也即密碼本中整理資訊的那一半。重
要的是,即使人人都知道這個大的非
素數,他們要判斷出那兩個素因數卻非常困難。
舉乙個簡單的例子,我可以交出非素數589,這
可能會使每個人都能代我打亂資訊。然而
,我將保守589的兩個素因數的秘密,結果只有我能夠整理資訊。如果別的人
能判斷出這兩個素因數,那麼他們也能整理我的資訊,但是即使是對這個不大的數,兩個素因數是什麼也不是顯而易見的。在589這個情形中,在台式電腦上只要花幾分鐘就可以算出兩個素因數實際上是31和19,所以我的密碼本的秘密不會持久。
然而,實際上我公布的非素數將會有100位以上的數字,這就使找出他的素因數的任務變得幾乎是不可能的。即使用世界上最快的計算機來將這個巨大的非素數(打亂資訊的密碼)分解成它的兩個素
因數(整理資訊的密碼),也要花幾年時間才能得到答案。於是,為挫敗外國間諜,我僅僅需要每年一次更改我的密碼本。每年一次我宣布我的巨大的非素數,
任何人都想嘗試整理我的資訊,就必須從頭開始設法算出這兩
個素因數。 2.
乙個單詞如果交換其所含字母順序,得到的單詞稱為兄弟單詞,例如mary和army是兄弟單詞,即所含字母是一樣的,只是字母順序不同,使用者輸入乙個單詞,要求在乙個字典中找出該單詞的所有兄弟單詞,並輸出。給出相應的資料結構及演算法。要求時間和空間複雜度盡可能低
目前思想:
struct ;
根據數學定理:任何乙個大於1的自然數n,都可以唯一分解成有限個質數的乘積 n=(p_1^a1)*(p_2^a2)......(p_n^an) , 這裡p_1例如
a=2 b=3 c=5 d=7 e=11...
f(abcd)=2*3*5*7=210
然後字典裡找乘積210的位數相同的一定是這5個字母組合的單詞就是兄弟單詞
3.自古希臘時代直至17世紀,人們探尋
梅森素數的意義似乎只是為了探尋
完全數。但自梅森提出著名斷言以來,特別是尤拉證明了
歐幾里得
關於完全書的定理的逆定理以來,完全數已僅僅是梅森素數的一種「副產品」了。
探尋梅森素數在現代已有十分豐富的意義。探尋梅森素數是發現已知
最大素數
的最有效的途徑,自尤拉證明m31為當時最大的素數以來,在發現已知最大素數的世界性競爭中,梅森素數幾乎囊括了全部冠軍。
探尋梅森素數是測試計算機運算速度及其他功能的有力手段。如m 1257787就是2023年9月美國克雷公司在測試其最新
超級計算機
的運算速度時得到的。梅森素數在推動計算機功能改進方面發揮了獨特作用。發現梅森素數不僅僅需要高功能的計算機,它還需要素數判別和數值計算的理論與方法以及高超巧妙的
程式設計技術
等等,因而他還推動了「數學皇后」——
數論得發展,促進了
計算數學
、程式設計技術的發展。
由於探尋梅森素數需要多種學科的支援,也由於發現新的「最大素數」所引起的國際影響,因而使得對於梅森素數的探尋能力已在某種意義上標誌著乙個國家的科學技術水平,而不僅僅是代表數學的研究水平。從各國各種傳媒(而不僅僅是學術刊物)爭相報道新的梅森素數的發現,也可清楚地看到這一點。
梅森素數在實用領域也有用武之地。現在人們已經大素數用於現代密碼
設計領域
,其原理是:將乙個很大的數分解成若干素數的乘積非常困難,但將幾個素數相乘卻相對容易得多。在這種密碼設計中,需要使用較大的素數,素數越大,密碼被破譯的可能性就越小。
探尋梅森素數最新的意義是,它促進了
分布式計算
技術的發展。從最新的8個梅森素數時gimps專案中發現這一事實,我們已可以想象到網格(grid)的威力。分布式計算技術使得用大量普通計算機去做本來要用超級計算機才能完成的專案成為可能,這是乙個前景非常廣闊的領域。
大素數的檢驗
費馬小定理 a p 1 mod p 1 p是素數 a0 首先我們證明這樣乙個結論 如果p是乙個素數的話,那麼對任意乙個小於p的正整數a,a,2a,3a,p 1 a 除以p的餘數正好是乙個1到p 1的 排列。例如,5是素數,3,6,9,12除以5的餘數分別為3,1,4,2,正好就是1到4這四個數。反證...
大素數測試
關鍵字 keywords 大素數 高效 快速 測試 檢測 驗證 先列出幾篇已經寫過的大素數測試的文章 基本都是用miller rabin的測試方法 但似乎都沒有實現完整的 另外對於miller rabin的方法還有可以改進的地方 miller rabin的演算法 我們的問題是給定乙個數n,想判斷它到...
反素數 反素數應用 自己用的模板
反素數定義 對於任何正整數n,其約數個數為f n 例如f 6 4,如果某個正整數n滿足 對任意的正整數i 0性質 乙個反素數的所有質因子必然是從2開始的連續若干個質數,因為反素數是保證約數個數為x的這個數n盡量小 同樣的道理,如果n 2t1 3t2 t1 t2 t3 t4 t5 在acm競賽中,最常...