❶ 為什麼判斷一個數是不是2或5的倍數只要看個位數,而三的倍數要看各個數位上的數之和
之所以判斷一個數是不是二或者五的倍數,只要看個位數,而三的倍數正要看各個位數的數值之和,是因為三是一個比較特殊的數字,所以具有符合這樣的數學規律,計算才會更精準。所以正確的計算方式要多和老師學習,和別人學習,要尊重對方的意見,做好以下幾點。
1、懂得替他人著想。凡事不計較,不會因為一些小事而斤斤計較,也不會因為別人對你做錯了什麼不肯原諒自己,不肯原諒他人,真正的對自己好的是放過他人也就是放過自己。平時做事要懂得洞察他人的心裡,見到人要懂得問好。
2、自己成功了,不瞧不起他人,自己失敗了,不瞧不起自己。做一個謙虛、不卑不亢的人。即使自己現在一無所有,也不會過分的自卑,貶低自己,而是自己給自己鼓勵,即使自己現在成功了,也不會瞧不起他人,還是會努力的檢查自己的不足。
3、善於傾聽別人的話語。在別人沒有說完話時不打算他人的話。如果對對方的意見有看法,也不要去否定他人的想法。要等他人說完再表達自己的看法。這樣才能收獲到更多的友情,才能收獲到真正的朋友們。
4、尊重對方的個性和想法,不要做什麼事情都用強硬的口吻與人對話。世界上沒有完全相同的兩片樹葉,所以說要懂得尊重對方的愛好,即使對方不願意聽自己的言語,自己就不要一味的再說,另外要善於和對方交談,不要總談論自己的悲傷,要善於傾聽他人的想法,懂得幫助他人。
5、尊重對方的隱私,少與他人爭辯一些無關緊要的事情。我們每個人都有自己並不想回答的事情,所以有時候不要去逼問對方。如果對方不想回答,或者回答的很含糊,那麼就馬上明白對方不喜歡回答這個問題,就不要繼續再說這樣的話題。
6、無論你喜歡還是討厭的人,都要學會尊重他人。尊重敵人就相當於我們沒有敵人,和每個人都是友好相處的。所以說尊重他人是一種智慧。我們要有寬廣的胸懷,對比自己優秀的人要向他人學習,對比自己差的人也要學會友好相處。
7、不為自己的錯誤找借口,自己做錯事情要承認,要努力的接受自己的不足,只有肯接受自己的缺點,才能更好的接受他人的缺點,對別人做錯的事情不要過分責備,要懂得寬容。
1、懂得替他人著想。凡事不計較,不會因為一些小事而斤斤計較,也不會因為別人對你做錯了什麼不肯原諒自己,不肯原諒他人,真正的對自己好的是放過他人也就是放過自己。平時做事要懂得洞察他人的心裡,見到人要懂得問好。
2、自己成功了,不瞧不起他人,自己失敗了,不瞧不起自己。做一個謙虛、不卑不亢的人。即使自己現在一無所有,也不會過分的自卑,貶低自己,而是自己給自己鼓勵,即使自己現在成功了,也不會瞧不起他人,還是會努力的檢查自己的不足。
3、善於傾聽別人的話語。在別人沒有說完話時不打算他人的話。如果對對方的意見有看法,也不要去否定他人的想法。要等他人說完再表達自己的看法。這樣才能收獲到更多的友情,才能收獲到真正的朋友們。
4、尊重對方的個性和想法,不要做什麼事情都用強硬的口吻與人對話。世界上沒有完全相同的兩片樹葉,所以說要懂得尊重對方的愛好,即使對方不願意聽自己的言語,自己就不要一味的再說,另外要善於和對方交談,不要總談論自己的悲傷,要善於傾聽他人的想法,懂得幫助他人。
5、尊重對方的隱私,少與他人爭辯一些無關緊要的事情。我們每個人都有自己並不想回答的事情,所以有時候不要去逼問對方。如果對方不想回答,或者回答的很含糊,那麼就馬上明白對方不喜歡回答這個問題,就不要繼續再說這樣的話題。
6、無論你喜歡還是討厭的人,都要學會尊重他人。尊重敵人就相當於我們沒有敵人,和每個人都是友好相處的。所以說尊重他人是一種智慧。我們要有寬廣的胸懷,對比自己優秀的人要向他人學習,對比自己差的人也要學會友好相處。
7、不為自己的錯誤找借口,自己做錯事情要承認,要努力的接受自己的不足,只有肯接受自己的缺點,才能更好的接受他人的缺點,對別人做錯的事情不要過分責備,要懂得寬容。😄😃
❷ 3的400次方最末兩位數字是什麼
費馬小定理:假如p是質數,且(a,p)=1,那麼 a^(p-1) ≡1(mod p)
感覺題目給出的答案不是應用費馬小定理呀,由於3和100互素,由費馬定理知:結果應該是100^(3-1)≡1 (mod 3)。而不是3^40≡1 mod 100,雖然這個式子是成立的。
3^40的最後三位數字當然是對1000求模。
3^400除以7的余數是多少方法上沒有什麼區別,只不過是除數越小,題目相對越簡單。
3^400≡9^200≡(7+2)^200≡2^200≡2^2*2^198≡4*2^(3*66) ≡4*8^66≡4*(7+1)^66≡4*1≡4(mod 7)。
❸ 我想知道質數的定義,謝謝大家.
所謂質數或稱素數,就是一個正整數,除了本身和 1 以外並沒有任何其他因子.例如 2,3,5,7 是質數,而 4,6,8,9 則不是,後者稱為合成數.從這個觀點可將整數分為兩種,一種叫質數,一種叫合成數.(有人認為數目字 1 不該稱為質數)著名的高斯「唯一分解定理」說,任何一個整數.可以寫成一串質數相乘的積.
(例1) ,, , , , ,這就是說,任何數都由質數構成的.
(例2) 2=(1×2),3,5,7,11…均為質數.而4,6,8不為質數.(因為最少還有因數2)
由於質數本身的奇異性使人無法一把抓住它出現的規律,抓住它出現的特性甚至不知道它實際分布的情形.簡單來說,給你一個正整數,你竟不可知道它是否是一個質數,即使你用盡了方法,證明它不可能是一個質數,但竟無法分解它,舉例來說:211-1=2047 可以分解成 .267-1 呢 據說美國代數學家 Frank Neloon Cole花了三年多才發現的.自然那時「電腦時代」還未來臨,只能靠無限的耐心與毅力,再加上一副長於計算數目的訓練才弄得出來.但有了電腦似乎好不了多少,數目字加大了,困難依舊.1931年 D.H. Lehmar 證明了 2257-1 是一個大合成數.大!不錯.它等於 231,584,178,474,632,390,847,141,970,017,375,815,706,
539,969,331,281,128,078,915,168,015,826,259,279,871
一個78位數字的大數,到目前仍未有人或電腦能分解它!
因此,雖然知道一個數目是否質數也許沒有多大用處,但仍是很有趣味,最少在找它的過程中會引起很多方法論的問題.
質數的特性
1質數除了2之外,必為奇數.(換句話說,2是最小的質數,也是唯一的偶數)
2「1」不算是質數.
3「算術基本定理」:比1大的任何整數,必可分解為質因數的乘積,且表示的方法是唯一的.
質數的個數與求法
1歐幾里德證明了「質數必有無限個」
2「Eratosthenes」濾套
若要求從2到n的質數,只要檢查n是否可被不大於的質數整除即可.要判斷313是否為質數,則只要檢查313是不是可以被小於或等於17的質數整除即可.
3質數有沒有一種特殊的型式呢
Mersenne質數:型如,若為質數時稱之(但質數不一定型如,
例如就非質數.)目前已知有3, 7, 31, 127,等38個,還在尋找中…
費瑪質數:型如,當n=0到4時.(但質數不一定型如,例
如n=5時,非質數.)
【注】型如稱為「費瑪數」,而費瑪質數只有3 , 5, 17 , 257 , 65537等五個.
4可不可以用一個公式,表示出所有的質數呢
(1)歐拉::在x=0,1,2…40時,可得41個質數
(1)勒真德::在x=0,1,2…28時,可得29個質數
:在x=0,1,2…79時,可得80個質數
:在x=1,2…11000時,可得11000個質數
●但是,沒有一個多項式可表示出所有的質數
為什麼要找質數
「既然質數有無限多個,那麼為什麼數學家要投入那麼多的心力一直尋找更大的質數呢 」
簡單的說,數學家就和一般人一樣,「你有收藏東西的興趣習慣嗎 」「喜歡在比賽中得到名次嗎 」這個都是理由之一.回答這個問題,可以用幾個方向來說明,
一,這是傳統!
在西元前300年的歐幾里德已經開始這個追求!他在「幾何原本」中提及完全數的概念,其中和麥司尼質數產生了關聯,開啟了研究之門,之後大數學家如費瑪,歐拉,麥司尼,笛卡爾…相繼投入這個追尋的工作中.也就在尋找大的質數的過程中,對基本數論有很大的助益,因此這個尋找的傳統值得被繼續~
二,它的附加價值!
因為美國的政治上的目的,才有把人送上月球的創舉,但是追尋大的質數例如像麥司尼質數,對社會影響的卻是持續不斷的,它的副加價值在於不斷促進科技的進步與人們的日常生活有用的東西材質的研發,也改進教育建設讓生活更有生產力.在尋找並紀錄麥司尼質數的過程中,讓老師可以帶領學生投入研究,這讓學生將研究的精神用於工作上,讓工程或科學的得以進步,當然這只是副加價的一部份而已.
三,人們喜歡美麗且稀少的物品!
如前文提及歐幾里德已經開始這個追求後,它是如此稀少(目前已知有30多個,還在尋找中),不僅如此它也是美麗的;數學上什麼叫作「美麗」 例如人們希望證明是簡短,明了,而且可以紿合舊知識讓你了解新的東西!而麥司尼質數的型式與證明都合符合上述的要求.
四,無上榮耀!
運動選手為什麼不斷追不更高,更快,更遠呢 難道是希望他們在工作上可以使用這些技巧嗎 不是吧,它們都是渴望競爭,為了榮耀(to win)!險峻的峭壁和高山峻嶺對於喜歡攀岩,登山的人,有無法抗拒的魅力,數學的探索也是如此,看著無法想像巨大的數字竟是質數時那種心情是相同的,因此繼續尋找下一個的渴望,豈是語言可以形容
人們當然需要務實,但是也需要好奇心和不斷嘗試的精神,才能而不斷進步.
五,對電腦的考驗!
當電腦的發明之後,人們可以藉由電腦的計算去找麥司尼質數,因為檢驗一個已知的質數都要經過十億次以上的計算才會計算出來(以電腦來算當然很快),這時候就是測驗電腦穩不穩定的好時機,Intel的Pentium處理器,就被Thomas Nicely在計算twin prime constant時,找到有bug存在.
六,了解質數分布的情形!
雖然數學不是實驗的科學,但是在我們會用例子去檢驗我們的猜測,當例子愈來愈多時,我們也會更了解事實,而質數的分布情形這是如此,例如高斯在看過質數表之後猜測了質數定理(prime number theorem),這個定理在1896由哈達瑪(Hadamard)及普辛(Pouusin)分別證得:
質數是自然數的一部份,有趣的是,它卻與自然數的個數一樣多,也有無窮多個.兩千多年前,古希臘數學家就從理論上證明了這一點.不過,質數看上去要比自然數少的多.有人統計過,在1到1000之間,有168個質數;在1000到2000之間,有135個質數;在2000到3000之間,有127個質數;而在3000到4000之間,就只有120個質數了,越往後,質數就會越稀少.那麼,怎樣從自然數里把質數給找出來呢 公元前三世紀,古希臘數學家埃拉托塞尼(Eratosthenes)發明了一種很有趣的方法.埃拉托塞尼常把數表寫在塗了白臘的木板上,遇到需要劃去的數,就在那個數的位置刺一個孔;隨著合數逐一被劃掉,木板上變得千瘡百孔,像是一個神奇的篩子,篩掉了合數,留下了質數.所以,人們將這種求質數的方法叫做"埃拉托塞尼篩法".
1. 我們把1~100的自然數,按照順序列成一張百數表.(如下表)
2. 首先把1劃掉,因為1既不是質數,也不是合數.
3. 接下來一個數是2,它是最小的質數,應予保留.但2的倍數一定不是質數,應該全部劃掉;也就是從2起,每隔1個數就劃掉1個數.
4. 在剩下的數中,3是第一個未被劃掉的數,它是個質數,應予保留.但3的倍數一定不是質數,應該全部劃掉;也就是從3起,每隔2個數就劃掉1個數.
5. 在剩下的數中,4已被劃掉了,其餘的數,5成為第一個未被劃掉的數,它是質數,也應予以保留.但5的倍數一定不是質數,應該全部劃掉;也就是從5起,每隔4個數就劃掉1個數.
6.仿照步驟1~5,繼續劃下去,數表上最後剩下的就是1~100之間的質數了.
埃拉托塞尼篩法
這種方法是世界上最古老的一種求質數的方法,它的原理很簡單,運用起來也很方便.現在,憑著經過改進後的埃拉托塞尼篩法,數學家們已把10億以內的質數全都篩出來了.怎樣找質數呢 這個問題據說自希臘及中國周朝已有人在問這個難題了.下面是一些初步查詢.
質數是無窮.這很早就證明了.因若 p1=2, p2=3, pn 是最初 n 個質數,則新數目 必由一個不等於 p1, p2, , pn 中任一個質數的新質數所除盡,故而 pn+1 存在了;且
舉例說,
但 30031=59 x 509
證明了 ,不必是質數.
考慮
f(n) 形式中是否有無限個質數存在或 f(p) 中是否有無限合成數存在呢
怎樣證明 n 是一個質數呢
傳統的「篩法」是將任一個數n的可能因子查證,簡化後;只要過濾所有小於的質數即可以了.就是n若是合成數,必有一個小於的質因數.如 3,5,7,11,13,等等.目前零碎地查質數的方法固然有,但仍無一萬全之方.
費馬的猜測
17世紀時,有個法國律師叫費馬(Fermat,1601-1665),他非常喜歡數學,常常利用業余時間研究高深的數學問題,結果取得了很大的成就,被人稱之為"業余數學家之王".費馬研究數學時,不喜歡搞證明,喜歡提問題;他憑藉豐富的想像力和深刻的洞察力,提出一系列重要的數學猜想,深刻地影響了數學的發展,他提出的"費馬最後定理",幾百年來吸引了無數的數學家,直到1994年才由美國普林斯頓大學的懷爾斯得出證明.
他在西元1640年提出了一個公式:『 2+1』,他驗算了n等於1到4的情況,發現都是質數以後(如下表),就直接猜測只要n是自然數,這個公式求出來的一定是質數.」
n
2+1
1
2+1=5(質數)
2
2+1=17(質數)
3
2+1=257(質數)
4
2+1=65537(質數)
1. 費馬最喜歡的數學分支是數論,他曾深入研究過質數的性質,他發現了一個有趣的現象.計算 = 它是一個質數嗎 .
2. 那 又是多少呢 它是一個質數嗎 .
3. 再下去, 是多少呢 它是一個質數嗎 .
4. 最後, 是多少呢 它是一個質數嗎
解答:
=5;它是質數.
=17;它是質數.
=257;它是質數.
=65537;它是質數.
費馬當年並沒有繼續算下去,他猜測說:只要n是自然數,由這個公式 得出的數一定都是質數;這是一個很有名的猜想,由於n=5之後演算起來很麻煩,很少有人去驗證它.
1732年,大數學家歐拉認真研究了這個問題,它發現費馬只要再往下演算一個自然數,就會發現由這個公式得出的數不全是質數.
n=5時,==4294967297,4294967297可以分解為641×6700417,它不是質數.也就是說,費馬的這個猜想不能成為一個求質數的公式.實際上幾千年來,數學家們一直在尋找這樣的一個公式,一個能求出所有質數的公式;但直到現在,誰也未能找到這樣一個公式,而且誰也未能找到證據,說這樣的公式就一定不存在;這樣的公式存不存在,也就成了一個著名的數學難題.
費馬在數學史上,是一位非常重要的人物,雖然費馬的公式是錯誤的,但是數學家從另一個方向來尋找大質數,也就是之前講完全數時提到的:『如果2-1是一個質數,那麼N=2(2-1)一定是個完全數.』於是,數學家們努力驗算不同的 n值,也找出了一些質數,但是由於數字太大,當時又沒有電腦的幫忙,所以很多結果都是錯的.到了十七世紀,一位法國的天主教修士梅森尼提出了:在 n不大於257的情況下,共有十一個質數.雖然他的結果同樣有不少錯誤,但是後人就把『2-1』這種形式的質數叫做『梅森尼質數』.」
費馬定理
費馬一心想要找出一個求質數的公式,結果未能成功.人們發現,倒是他無意提出的另一個猜想,對尋找質數很有用處.
費馬猜測說;如果 是一個質數,那麼,對任何自然數n,( )一定能被 整除.這一回費馬猜對了,這個猜想被人稱作費馬小定理.例如:11是質數,2是自然數,所以( )一定能被11整除.
利用費馬定理,這是目前最有效的鑒定質數的方法.要判斷一個數n是不是質數,首先看它能不能整除( ),如果不能整除,它一定是合數;如果能整除,它就"極可能"是質數.現在,在電子計算機上運用這種新方法,要鑒定一個上百位的數是不是質數,一般只要15秒鍾就夠了.
質數公式表
f(x)公式
在100以下令f(x)成合成數的x值
總數
x2-79+1601
80, 81, 84, 89, 96
5
x2+x+41
40,41,44,49, 56, 65, 76,81,82,84,87,89,91,96
14
2x2+29
29, 30, 32, 35, 39,44, 50, 57, 58, 61,63, 65,
25
72,74,76, 84,87, 88, 89,91,92,94,95, 97, 99
6x2+6x+31
29, 30, 31, 34, 36,41,44, 51, 55, 59, 61, 62,
25
64,66, 69,76,80, 84, 86. 87, 88, 92, 93, 97, 99
3x2+3x+23
22,23,27, 30, 38,43, 44,45,46,49, 51, 55, 56, 59,
28
62,66,68, 69,70,78, 85, 87, 88, 89, 91,92,95,96
像質數公式 x2+x+41,我們能找到連續 40 個(由 0 到 39)的質數,有沒有一條質數公式 f=x2+x+b,能使 (b-1) 個連續 x 值使 f(x) 都是質數呢 有人曾用電算機去找,結果查出如果有,則 b 值一定要超過 1,250,000,000,而且最多隻有一個.看來這個問題大概解不了.
現在的數學家們在質數這個領域里,有兩個重要的研究方向:一個是利用各種更有效率的篩法,不斷地往更大的數裡面去搜尋質數;另外就是尋找新的『梅森尼質數』.到西元1996年為止,數學家已經藉由電腦運算,知道1020以內有多少質數了;另一方面,在西元1999年六月,數學家也發現了第三十八個『梅森尼質數』: 26972593-1,這同時也是到目前為止發現的最大質數!它是一個2098960位數.
❹ 求有關初等數論的所有知識```
初等數論
研究數的規律,特別是整數性質的數學分支。是數論的一個最古老的分支。它以算術方法為主要研究方法,主要內容有整數的整除理論、不定方程、同餘式等。古希臘畢達哥拉斯是初等數論的先驅。他與他的學派致力於一些特殊整數(如親和數、完全數、多邊形數)及特殊不定方程的研究。公元前4世紀,歐幾里德的《幾何原本》通過102個命題,初步建立了整數的整除理論。他關於「素數有無窮多個」的證明,被認為是數學證明的典範。公元3世紀,丟番圖研究了若干不定方程,並分別設計巧妙解法,故後人稱不定方程為丟番圖方程。17世紀以來,P.de費馬、L.歐拉、C.F.高斯 等人的工作大大豐富和發展了初等數論的內容。中國古代對初等數論的研究有著光輝的成就,《周髀算經》、《孫子算經》、《張邱建算經》、《數書九章》等古文獻上都有記載。孫子定理比歐洲早500年, 西方常稱此定理為中國剩餘定理,秦九韶的大衍求一術也馳名世界。初等數論不僅是研究純數學的基礎,也是許多學科的重要工具。它的應用是多方面的,如計算機科學、組合數學、密碼學、資訊理論等。如公開密鑰體制的提出是數論在密碼學中的重要應用。
初等數論就是用初等、樸素的方法去研究數論。另外還有解析數論(用解析的方法研究數論。)、代數數論(用代數結構的方法研究數論)。
素數
數論剛開始的時候是用樸素的推理方法去研究整數的性質,又以素數最令人神往。古今不知道多少數學家都為了它而嘔心瀝血!研究素數的性質是數論中一個非常重要的方面!
所謂素數,就是一個正整數,它除了本身和 1 以外並沒有任何其他因子。素數就好象是正整數的原子一樣,著名的高斯「唯一分解定理」說,任何一個整數。可以寫成一串質數相乘的積。但是至今仍然沒有一個一般的特別使用的式子可以表示所有的素數。所以數論里關於素數的兩個著名猜想非常困難:
1哥德巴赫猜想 :(Goldbach Conjecture)
內容為「所有的大於2的偶數,都可以表示為兩個素數」
這個問題是德國數學家哥德巴赫(C.Goldbach,1690-1764)於1742年6月7日在給大數學家歐拉的信中提出的,所以被稱作哥德巴赫猜想。同年6月30日,歐拉在回信中認為這個猜想可能是真的,但他無法證明。從此,這道數學難題引起了幾乎所有數學家的注意。哥德巴赫猜想由此成為數學皇冠上一顆可望不可即的「明珠」。「用當代語言來敘述,哥德巴赫猜想有兩個內容,第一部分叫做奇數的猜想,第二部分叫做偶數的猜想。奇數的猜想指出,任何一個大於等於7的奇數都是三個素數的和。偶數的猜想是說,大於等於4的偶數一定是兩個素數的和。」(引自《哥德巴赫猜想與潘承洞》)
哥德巴赫猜想貌似簡單,要證明它卻著實不易,成為數學中一個著名的難題。18、19世紀,所有的數論專家對這個猜想的證明都沒有作出實質性的推進,直到 20世紀才有所突破。直接證明哥德巴赫猜想不行,人們採取了「迂迴戰術」,就是先考慮把偶數表為兩數之和,而每一個數又是若干素數之積。如果把命題"每一個大偶數可以表示成為一個素因子個數不超過a個的數與另一個素因子不超過b個的數之和"記作"a+b",那麼哥氏猜想就是要證明"1+1"成立。
1900年,20世紀最偉大的數學家希爾伯特,在國際數學會議上把「哥德巴赫猜想」列為23個數學難題之一。此後,20世紀的數學家們在世界范圍內「聯手」進攻「哥德巴赫猜想」堡壘,終於取得了輝煌的成果。
到了20世紀20年代,有人開始向它靠近。1920年,挪威數學家布爵用一種古老的篩選法證明,得出了一個結論:每一個比6大的偶數都可以表示為(9+ 9)。這種縮小包圍圈的辦法很管用,科學家們於是從(9十9)開始,逐步減少每個數里所含質數因子的個數,直到最後使每個數里都是一個質數為止,這樣就證明了「哥德巴赫猜想」。
1920年,挪威的布朗(Brun)證明了 「9+9 」。
1924年,德國的拉特馬赫(Rademacher)證明了「7+7 」。
1932年,英國的埃斯特曼(Estermann)證明了 「6+6 」。
1937年,義大利的蕾西(Ricei)先後證明了「5+7 」, 「4+9 」, 「3+15 」和「2+366 」。
1938年,蘇聯的布赫 夕太勃(Byxwrao)證明了「5+5 」。
1940年,蘇聯的布赫 夕太勃(Byxwrao)證明了 「4+4 」。
1948年,匈牙利的瑞尼(Renyi)證明了「1+c 」,其中c是一很大的自然數。
1956年,中國的王元證明了 「3+4 」。
1957年,中國的王元先後證明了 「3+3 」和 「2+3 」。
1962年,中國的潘承洞和蘇聯的巴爾巴恩(BapoaH)證明了 「1+5 」, 中國的王元證明了「1+4 」。
1965年,蘇聯的布赫 夕太勃(Byxwrao)和小維諾格拉多夫(BHHopappB),及 義大利的朋比利(Bombieri)證明了「1+3 」。
1966年,中國的陳景潤證明了 「1+2 」[用通俗的話說,就是大偶數=素數+素數*素數或大偶數=素數+素數(註:組成大偶數的素數不可能是偶素數,只能是奇素數。因為在素數中只有一個偶素數,那就是2。)]。
其中「s + t 」問題是指: s個質數的乘積 與t個質數的乘積之和
20世紀的數學家們研究哥德巴赫猜想所採用的主要方法,是篩法、圓法、密率法和三角和法等等高深的數學方法。解決這個猜想的思路,就像「縮小包圍圈」一樣,逐步逼近最後的結果。
由於陳景潤的貢獻,人類距離哥德巴赫猜想的最後結果「1+1」僅有一步之遙了。但為了實現這最後的一步,也許還要歷經一個漫長的探索過程。有許多數學家認為,要想證明「1+1」,必須通過創造新的數學方法,以往的路很可能都是走不通的。
2孿生素數猜想:所謂孿生素數指的就是這種間隔為 2 的相鄰素數,它們之間的距離已經近得不能再近了,就象孿生兄弟一樣。最小的孿生素數是 (3, 5),在 100 以內的孿生素數還有 (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61) 和 (71, 73),總計有 8 組。但是隨著數字的增大,孿生素數的分布變得越來越稀疏,尋找孿生素數也變得越來越困難。那麼會不會在超過某個界限之後就再也不存在孿生素數了呢?
我們知道,素數本身的分布也是隨著數字的增大而越來越稀疏,不過幸運的是早在古希臘時代,Euclid 就證明了素數有無窮多個 (否則今天許多數論學家就得另謀生路)。長期以來人們猜測孿生素數也有無窮多組,這就是與 Goldbach 猜想齊名、集令人驚異的簡單表述和令人驚異的復雜證明於一身的著名猜想 - 孿生素數猜想:
存在無窮多個素數 p, 使得 p+2 也是素數。
究竟誰最早明確提出這一猜想我沒有考證過,但是一八四九年法國數學 Alphonse de Polignac 提出猜想:對於任何偶數 2k, 存在無窮多組以 2k 為間隔的素數。對於 k=1,這就是孿生素數猜想,因此人們有時把 Alphonse de Polignac 作為孿生素數猜想的提出者。不同的 k 對應的素數對的命名也很有趣,k=1 我們已經知道叫做孿生素數, k=2 (即間隔為 4) 的素數對被稱為 cousin prime (比 twin 遠一點),而 k=3 (即間隔為 6) 的素數對竟然被稱為 sexy prime (這回該相信 「書中自有顏如玉」 了)!不過別想歪了,之所以稱為 sexy prime 其實是因為 sex 正好是拉丁文中的 6。:-)
孿生素數猜想還有一個更強的形式,由英國數學家 Hardy 和 Littlewood 於一九二三年提出,現在通常稱為 Hardy-Littlewood 猜想或強孿生素數猜想[注一]。這一猜想不僅提出孿生素數有無窮多組,而且還給出其漸近分布形式為:
x
π2(x)~2C2∫dt/(lnt)^2
2
其中 π2(x) 表示小於 x 的孿生素數的數目, C2 被稱為孿生素數常數 (twin prime constant),其數值為:
C2=∏P(P-2)/(p-1)^2≈0....
p≥3
Hardy-Littlewood 猜想所給出的孿生素數分布的精確程度可以由下表看出:
x 孿生素數數目 Hardy-Littlewood 猜想
100,000 1224 1249
1,000,000 8,169 8,248
10,000,000 58,980 58,754
100,000,000 440,312 440,368
10,000,000,000 27,412,679 27,411,417
很明顯,Hardy-Littlewood 猜想的對孿生素數分布的擬合程度是驚人的。 如此精彩的擬合堪與自然科學史上 Adams 和 Leverrier 運用天體攝動規律對海王星位置的預言以及 Einstein 對光線引力偏轉的預言相媲美,是理性思維的動人篇章。這種數據對於純數學的證明雖沒有實質的幫助,但是它大大增強了人們對孿生素數猜想的信心。
順便說一下,Hardy-Littlewood 猜想所給出的孿生素數分布規律可以通過一個簡單的定性分析 「得到」:我們知道素數定理 (prime number theorem) 表明對於足夠大的 x, 在 x 附近素數的分布密度大約為 1/ln(x),因此兩個素數處於區間 2 以內的概率大約為 2/ln2(x)。這幾乎正好就是 Hardy-Littlewood 猜想中的被積函數!當然其中還差了一個孿生素數常數 C2,而這個常數很顯然正是 Handy 與 Littlewood 的功力深厚之處!
除了 Hardy-Littlewood 猜想與孿生素數實際分布之間的擬合外,對孿生素數猜想的另一類 「實驗」 支持來自於對越來越大的孿生素數的直接尋找。就象對於大素數的尋找一樣,這種尋找在很大程度上成為對計算機運算能力的一種檢驗,一九九四年十月三十日,這種尋找竟然導致發現了 Intel Pentium 處理器浮點除法運算的一個 bug,在工程界引起了不小的震動。截至二零零二年底,人們發現的最大的孿生素數是:
(33218925×2169690-1, 33218925×2169690+1)
這對素數中的每一個都長達 51090 位!許多年來這種記錄一直被持續而成功地刷新著。
好了,介紹了這么多關於孿生素數的資料,現在該說說人們在證明孿生素數猜想上所走過的路了。
迄今為止在證明孿生素數猜想上的成果大體可以分為兩類。第一類是非估算性的結果,這一方面迄今最好的結果是一九六六年由已故的我國數學家陳景潤 (順便說一下,美國數學學會在介紹 Goldston 和 Yildirim 成果的簡報中提到陳景潤時所用的稱呼是 「偉大的中國數學家陳」) 利用篩法 (sieve method) 所取得的。陳景潤證明了:存在無窮多個素數 p, 使得 p+2 要麼是素數,要麼是兩個素數的乘積。這個結果和他關於 Goldbach 猜想的結果很類似。目前一般認為,由於篩法本身的局限性,這一結果在篩法范圍內很難被超越。
證明孿生素數猜想的另一類結果是估算性的,Goldston 和 Yildirim 所取得的結果也屬於這一類。這類結果估算的是相鄰素數之間的最小間隔,更確切地說是:
Δ := lim inf[(P(n+1)-Pn)/ln(Pn)]
n→∞
翻譯成白話文,這個表達式定義的是兩個相鄰素數之間的間隔與其中較小的那個素數的對數值之比在整個素數集合中所取的最小值。很顯然孿生素數猜想如果成立,那麼 Δ 必須等於 0,因為孿生素數猜想表明 pn+1-pn=2 對無窮多個 n 成立,而 ln(pn)→∞,因此兩者之比的最小值對於孿生素數集合 (從而對於整個素數集合也) 趨於零。不過要注意 Δ=0 只是孿生素數猜想成立的必要條件,而不是充份條件。換句話說如果能證明 Δ≠0 則孿生素數猜想就不成立,但證明 Δ=0 卻並不意味著孿生素數猜想就一定成立。
對於 Δ 最簡單的估算來自於素數定理。按照素數定理,對於足夠大的 x, 在 x 附近素數出現的幾率為 1/ln(x),這表明素數之間的平均間隔為 ln(x) (這也正是 Δ 的表達式中出現 ln(pn) 的原因),從而 (pn+1-pn)/ln(pn) 給出的其實是相鄰素數之間的間隔與平均間隔的比值,其平均值顯然為 1。平均值為 1,最小值顯然是小於等於 1,因此素數定理給出 Δ≤1。
對 Δ 的進一步估算始於 Hardy 和 Littlewood。一九二六年,他們運用圓法 (circle method) 證明了假如廣義 Riemann 猜想成立,則 Δ≤2/3。這一結果後來被被 Rankin 改進為 Δ≤3/5。但是這兩個結果都有賴於本身尚未得到證明的廣義 Riemann 猜想,因此只能算是有條件的結果。一九四零年,Erdös 利用篩法首先給出了一個不帶條件的結果:Δ<1 (即把素數定理給出的結果中的等號部分去掉了)。此後 Ricci 於一九五五年, Bombieri 和 Davenport 於一九六六年,Huxley 於一九七七年, 分別把這一結果推進到 Δ≤15/16, Δ≤(2+√3)/8≈0.4665 及 Δ≤0.4425。 Goldston 和 Yildirim 之前最好的結果是 Maier 在一九八六年取得的 Δ≤0.2486。
以上這些結果都是在小數點後做文章, Goldston 和 Yildirim 的結果把這一系列的努力大大推進了一步,並且 - 如果得到證實的話 - 將在一定意義上終結對 Δ 進行數值估算的長達幾十年的征途,因為 Goldston 和 Yildirim 證明了 Δ=0。當然如我們前面所說,Δ=0 只是孿生素數猜想成立的必要條件,而非充份條件,因此 Goldston 和 Yildirim 的結果離最終證明孿生素數猜想還遠得很,但它無疑是近十幾年來這一領域中最引人注目的結果。
一旦 Δ=0 被證明,人們的注意力自然就轉到了研究 Δ 趨於 0 的方式上來。孿生素數猜想要求 Δ ~ [log(pn)]-1 (因為 pn+1-pn=2 對無窮多個 n 成立)。 Goldston 和 Yildirim 的證明給出的是 Δ ~ [log(pn)]-1/9,兩者之間還有相當距離。但是看過 Goldston 和 Yildirim 手稿的一些數學家認為 Goldston 和 Yildirim 所用的方法明顯存在改進的空間,也就是說對 Δ 趨於 0 的方式可以給出更強的估計。因此 Goldston 和 Yildirim 的證明其價值不僅僅在於結果本身,更在於它很有可能成為未來一系列研究的起點。這種系列研究對於數學來說有著雙重的價值,因為一方面這種研究所獲得的新結果是對數學的直接貢獻,另一方面這種研究對 Goldston 和 Yildirim 的證明會起到反復推敲和核實的作用。現代數學早已超越了一兩個評審花一兩個小時就可以對一個數學證明做出評判的時代。以前四色定理和 Fermat 大定理都曾有過一個證明時隔幾年 (甚至十幾年) 才被發現錯誤的例子。因此一個復雜的數學結果能夠成為進一步研究的起點,吸引其它數學家的參與對於最終判定該結果的正確性具有極其正面的意義。
這兩個猜想還一直在吸引著數學家們!
有無窮多個素數
這個古老的命題最初是由古希臘數學家歐幾里德(Euclid of Alexandria,生活在亞歷山大城,約前330~約前275,是古希臘最享有盛名的數學家)在他的不朽著作《幾何原本》里給出的一個反證法:
假設命題不真,則只有有限多個素數,設所有的素數是2=a1<a2<……<an.
此時,令N=a1*a2*……*an+1,那麼所有的ai(i=1,2,……,n)顯然都不是N的因子,那麼有兩個可能:或者N有另外的素數真因子,或者N本身就是一個素數,但是顯然有N>ai(i=1,2……n).無論是哪種情況,都將和假設矛盾。這個矛盾就完成了我們的證明,所以確實有無窮多個素數!
這個證明簡短而又有力,充分體現了證明者的智慧,也體現出數學的概括性和美麗!
其實,後人還發現了很多方法去證明這個命題,例如:用費馬數(Fn=2^(2^n)+1)可以給出一個證明,但是都不如歐幾里德的證明簡單,所以人們比較熟悉的就是這個證明。
費馬(Fermat):數論大師
費馬在數論領域中的成果是巨大的,其中主要有:(費馬大定理 、費馬小定理)
費馬大定理:n>2是整數,則方程x^n+y^n=z^n沒有滿足xyz≠0的整數解。這個是不定方程,它已經由美國數學家證明了(1995年),證明的過程是相當艱深的!
費馬小定理:a^p-a≡0(mod p),其中p是一個素數,a是正整數,它的證明比較簡單。事實上它是Euler定理的一個特殊情況,Euler定理是說:a^φ(n)-1≡0(mod n),a,n都是正整數,φ(n)是Euler函數,表示和n互素的小於n的正整數的個數(它的表達式歐拉已經得出,可以在「Euler公式"這個詞條里找到)。
(1)全部素數可分為4n+1和4n+3兩種形式。
(2)形如4n+1的素數能夠,而且只能夠以一種方式表為兩個平方數之和。
(3)沒有一個形如4n+3的素數,能表示為兩個平方數之和。
(4)形如4n+1的素數能夠且只能夠作為一個直角邊為整數的直角三角形的斜邊;4n+1的平方是且只能是兩個這種直角三角形的斜邊;類似地,4n+1的m次方是且只能是m個這種直角三角形的斜邊。
(5)邊長為有理數的直角三角形的面積不可能是一個平方數。
(6)4n+1形的素數與它的平方都只能以一種方式表達為兩個平方數之和;它的3次和4次方都只能以兩種表達為兩個平方數之和;5次和6次方都只能以3種方式表達為兩個平方數之和,以此類推,直至無窮。
(7)發現了第二對親和數:17296和18416。
❺ 如何知道一個很大的數是不是素數
高速判斷用 miller-rabin演算法或者 aks 演算法
1.約定x%y為x取模y,即x除以y所得的余數,當x<y時,x%y=x,所有取模的運算對象都為整數。
x^y表示x的y次方。乘方運算的優先順序高於乘除和取模,加減的優先順序最低。
見到x^y/z這樣,就先算乘方,再算除法。
A/B,稱為A除以B,也稱為B除A。
若A%B=0,即稱為A可以被B整除,也稱B可以整除A。
A*B表示A乘以B或稱A乘B,B乘A,B乘以A……都一樣。
有N為任意正整數,P為素數,且N不能被P整除(顯然N和P互質),則有:N^P%P=N(即:N的P次方除以P的余數是N)。
但是我查了很多資料見到的公式都是這個樣子:
(N^(P-1))%P=1後來分析了一下,兩個式子其實是一樣的,可以互相變形得到。
原式可化為:(N^P-N)%P=0(即:N的P次方減N可以被P整除,因為由費馬小定理知道N的P次方除以P的余數是N)把N提出來一個,N^P就成了你N*(N^(P-1)),那麼(N^P-N)%P=0可化為:
(N*(N^(P-1)-1))%P=0
請注意上式,含義是:N*(N^(P-1)-1)可以被P整除
又因為N*(N^(P-1)-1)必能整除N(這不費話么!)
所以,N*(N^(P-1)-1)是N和P的公倍數,小學知識了^_^
又因為前提是N與P互質,而互質數的最小公倍數為它們的乘積,所以一定存在
正整數M使得等式成立:N*(N^(P-1)-1)=M*N*P
兩邊約去N,化簡之:N^(P-1)-1=M*P
因為M是整數,顯然:N^(P-1)-1)%P=0即:N^(P-1)%P=1
有N為任意正整數,P為素數,且N不能被P整除(顯然N和P互質),則有:N^P%P=N(即:N的P次方除以P的余數是N)。
但是我查了很多資料見到的公式都是這個樣子:
(N^(P-1))%P=1後來分析了一下,兩個式子其實是一樣的,可以互相變形得到。
原式可化為:(N^P-N)%P=0(即:N的P次方減N可以被P整除,因為由費馬小定理知道N的P次方除以P的余數是N)把N提出來一個,N^P就成了你N*(N^(P-1)),那麼(N^P-N)%P=0可化為:
(N*(N^(P-1)-1))%P=0
請注意上式,含義是:N*(N^(P-1)-1)可以被P整除
又因為N*(N^(P-1)-1)必能整除N(這不費話么!)
所以,N*(N^(P-1)-1)是N和P的公倍數,小學知識了^_^
又因為前提是N與P互質,而互質數的最小公倍數為它們的乘積,所以一定存在
正整數M使得等式成立:N*(N^(P-1)-1)=M*N*P
兩邊約去N,化簡之:N^(P-1)-1=M*P
因為M是整數,顯然:N^(P-1)-1)%P=0即:N^(P-1)%P=1
有N為任意正整數,P為素數,且N不能被P整除(顯然N和P互質),則有:N^P%P=N(即:N的P次方除以P的余數是N)。
但是我查了很多資料見到的公式都是這個樣子:
(N^(P-1))%P=1後來分析了一下,兩個式子其實是一樣的,可以互相變形得到。
原式可化為:(N^P-N)%P=0(即:N的P次方減N可以被P整除,因為由費馬小定理知道N的P次方除以P的余數是N)把N提出來一個,N^P就成了你N*(N^(P-1)),那麼(N^P-N)%P=0可化為:
(N*(N^(P-1)-1))%P=0
請注意上式,含義是:N*(N^(P-1)-1)可以被P整除
又因為N*(N^(P-1)-1)必能整除N(這不費話么!)
所以,N*(N^(P-1)-1)是N和P的公倍數,小學知識了^_^
又因為前提是N與P互質,而互質數的最小公倍數為它們的乘積,所以一定存在
正整數M使得等式成立:N*(N^(P-1)-1)=M*N*P
兩邊約去N,化簡之:N^(P-1)-1=M*P
因為M是整數,顯然:N^(P-1)-1)%P=0即:N^(P-1)%P=1
先有一個引理,如果有:X%Z=0,即X能被Z整除,則有:(X+Y)%Z=Y%Z
設有X、Y和Z三個正整數,則必有:(X*Y)%Z=((X%Z)*(Y%Z))%Z
想了很長時間才證出來,要分情況討論才行:
1.當X和Y都比Z大時,必有整數A和B使下面的等式成立:
X=Z*I+A(1)
Y=Z*J+B(2)
不用多說了吧,這是除模運算的性質!
將(1)和(2)代入(X*Y)modZ得:((Z*I+A)(Z*J+B))%Z乘開,再把前三項的Z提一個出來,變形為:(Z*(Z*I*J+I*A+I*B)+A*B)%Z(3)
因為Z*(Z*I*J+I*A+I*B)是Z的整數倍……暈,又來了。
概據引理,(3)式可化簡為:(A*B)%Z又因為:A=X%Z,B=Y%Z,代入上面的式子,就成了原式了。
2.當X比Z大而Y比Z小時,一樣的轉化:
X=Z*I+A
代入(X*Y)%Z得:
(Z*I*Y+A*Y)%Z
根據引理,轉化得:(A*Y)%Z
因為A=X%Z,又因為Y=Y%Z,代入上式,即得到原式。
同理,當X比Z小而Y比Z大時,原式也成立。
3.當X比Z小,且Y也比Z小時,X=X%Z,Y=Y%Z,所以原式成立。
=====================================================
如計算2^13,則傳統做法需要進行12次乘法。
[cpp] view plainprint?該死的乘法,是時候優化一下了!把2*2的結果保存起來看看,是不是成了:
4*4*4*4*4*4*2
再把4*4的結果保存起來:16*16*16*2
一共5次運算,分別是2*2、4*4和16*16*16*2
這樣分析,我們演算法因該是只需要計算一半都不到的乘法了。
為了講清這個演算法,再舉一個例子2^7:2*2*2*2*2*2*2
兩兩分開:(2*2)*(2*2)*(2*2)*2
如果用2*2來計算,那麼指數就可以除以2了,不過剩了一個,稍後再單獨乘上它。
再次兩兩分開,指數除以2: ((2*2)*(2*2))*(2*2)*2
實際上最後一個括弧里的2 * 2是這回又剩下的,那麼,稍後再單獨乘上它 現在指數已經為1了,可以計算最終結果了:16*4*2=128
❻ 用費馬小定理是怎樣快速求出余數
這個定理逆命題似乎不成立,沒辦法判斷質數。
❼ 費馬小定理有什麼用
可以編排數字密碼,還可以判斷一個數是否為復合數。
❽ 判定素數(不是那種弱智演算法傻子都會,我想問用費馬小定理或歐拉函數解的演算法)
你好:
素數判定是一個不容易的事情。對小的素數,可准確判定,對較大的數,就不容易。很難肯定或否定某個大數是素數。
在工程方面,常見的做法是概率判定,就是利用費馬小定理做多次測試,如果都符合,就有很大概率是素數了。如果有一次不符合,即可得出否定結論。
現在還沒聽說多項式時間內的准確判定演算法,即使AKS演算法,也只是對較小的數字可行,較大數字的情況,因運算力量太大而不可行。
這樣說,是否表達明白?
❾ RSA-100 代表什麼
它是第一個既能用於數據加密也能用於數字簽名的演算法。它易於理解和操作,也很流行。演算法的名字以發明者的名字命名:Ron Rivest, Adi
Shamir 和Leonard Adleman。但RSA的安全性一直未能得到理論上的證明。它經歷了各種攻擊,至今未被完全攻破。
RSA的安全性依賴於大數分解。公鑰和私鑰都是兩個大素數( 大於 100
個十進制位)的函數。據猜測,從一個密鑰和密文推斷出明文的難度等同於分解兩個大素數的積。
密鑰對的產生。選擇兩個大素數,p 和q 。計算:
n = p * q
然後隨機選擇加密密鑰e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互質。最後,利用 Euclid 演算法計算解密密鑰d,滿足
e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )
其中n和d也要互質。數e和 n是公鑰,d是私鑰。兩個素數p和q不再需要,應該丟棄,不要讓任何人知道。
加密信息 m(二進製表示)時,首先把m分成等長數據塊 m1 ,m2,..., mi ,塊長s ,其中 <= n, s 盡可能的
大。對應的密文是:
ci = mi^e ( mod n ) ( a )
解密時作如下計算:
mi =ci^d ( mod n ) ( b )
RSA 可用於數字簽名,方案是用 ( a ) 式簽名, ( b )式驗證。具體操作時考慮到安全性和 m信息量較大等因素,一般是先作 HASH 運算。
RSA 的安全性。 RSA的安全性依賴於大數分解,但是否等同於大數分解一直未能得到理論上的證明,因為沒有證明破解
RSA就一定需要作大數分解。假設存在一種無須分解大數的演算法,那它肯定可以修改成為大數分解演算法。目前, RSA
的一些變種演算法已被證明等價於大數分解。不管怎樣,分解n是最顯然的攻擊方法。現在,人們已能分解多個十進制位的大素數。因此,模數n
必須選大一些,因具體適用情況而定。
RSA的速度。
由於進行的都是大數計算,使得RSA最快的情況也比DES慢上倍,無論是軟體還是硬體實現。速度一直是RSA的缺陷。一般來說只用於少量數據加密。
RSA的選擇密文攻擊。 RSA在選擇密文攻擊面前很脆弱。一般攻擊者是將某一信息作一下偽裝( Blind),讓擁
有私鑰的實體簽署。然後,經過計算就可得到它所想要的信息。實際上,攻擊利用的都是同一個弱點,即存在這樣一個事實:乘冪保留了輸入的乘法結構:
( XM )^d = X^d *M^d mod n
前面已經提到,這個固有的問題來自於公鑰密碼系統的最有用的特徵--每個人都能使用公鑰。但從演算法上無法解決這一問題,主要措施有兩條:一條是採用好的公鑰協議,保證工作過程中實體不對其他實體任意產生的信息解密,不對自己一無所知的信息簽名;另一條是決不對陌生人送來的隨機文檔簽名,簽名時首先使用One-Way
HashFunction 對文檔作HASH處理,或同時使用不同的簽名演算法。在中提到了幾種不同類型的攻擊方法。
RSA的公共模數攻擊。
若系統中共有一個模數,只是不同的人擁有不同的e和d,系統將是危險的。最普遍的情況是同一信息用不同的公鑰加密,這些公鑰共模而且互質,那末該信息無需私鑰就可得到恢復。設P為信息明文,兩個加密密鑰為e1和e2,公共模數是n,則:
C1 = P^e1 mod n
C2 = P^e2 mod n
密碼分析者知道n、e1、e2、C1和C2,就能得到P。 因為e1和e2互質,故用Euclidean演算法能找到r和s,滿足:
r * e1 + s * e2 = 1
假設r為負數,需再用Euclidean演算法計算C1^(-1),則
( C1^(-1) )^(-r) * C2^s = P mod n
另外,還有其它幾種利用公共模數攻擊的方法。總之,如果知道給定模數的一對e和d,一是有利於攻擊者分解模數,一是有利於攻擊者計算出其它成對的e』和d』,而無需分解模數。解決辦法只有一個,那就是不要共享模數n。
RSA的小指數攻擊。 有一種提高 RSA速度的建議是使公鑰e取較小的值,這樣會使加密變得易於實現,速度有
所提高。但這樣作是不安全的,對付辦法就是e和d都取較大的值。
RSA演算法是第一個能同時用於加密和數字簽名的演算法,也易於理解和操作。RSA是被研究得最廣泛的公鑰演算法,從提出到現在已近二十年,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。RSA的安全性依賴於大數的因子分解,但並沒有從理論上證明破譯RSA的難度與大數分解難度等價。即RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學界多數人士傾向於因子分解不是NPC問題。
RSA的缺點主要有:A)產生密鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密。B)分組長度太大,為保證安全性,n 至少也要 600 bits
以上,使運算代價很高,尤其是速度較慢,較對稱密碼演算法慢幾個數量級;且隨著大數分解技術的發展,這個長度還在增加,不利於數據格式的標准化。目前,SET(
Secure Electronic Transaction )協議中要求CA採用比特長的密鑰,其他實體使用比特的密鑰
首先,找出三個數,其中p,q是兩個相異的質數,r是與(p-1)(q-1)互質的數這三個數便是privatekey
接著,找出m,使得rm==1mod(p-1)(q-1)這個m一定存在,因為r與(p-1)(q-1)互質,用輾轉相除法就可以得到了再來,計算n=pqm,n這兩個數便是publickey編碼過程是,若資料為a,將其看成是一個大整數,假設a<n如果a>=n的話,就將a表成s進位(s<=n,通常取s=2^t),則每一位數均小於n,然後分段編碼接下來,計算b==a^mmodn,(0<=b<n),b就是編碼後的資料解碼的過程是,計算c==b^rmodpq(0<=c<pq),於是乎,解碼完畢等會會證明c和a其實是相等的
如果第三者進行竊聽時,他會得到幾個數:m,n(=pq),b他如果要解碼的話,必須想辦法得到r所以,他必須先對n作質因數分解要防止他分解,最有效的方法是找兩個非常的大質數p,q,使第三者作因數分解時發生困難
<定理>
若p,q是相異質數,rm==1mod(p-1)(q-1),a是任意一個正整數b==a^mmodpq,c==b^rmodpq,
則c==amodpq
證明的過程,會用到費馬小定理,敘述如下:
m是任一質數,n是任一整數,則n^m==nmodm 換另一句話說,如果n和m互質,則n^(m-1)==1modm)
運用一些基本的群論的知識,就可以很容易地證出費馬小定理的 ><證明>
因為rm==1mod(p-1)(q-1),所以rm=k(p-1)(q-1)+1,其中k是整數,因為在molo中是preserve乘法的x==ymodzan==vmodz=>xu==yvmodz),
所以,c==b^r==(a^m)^r==a^(rm)==a^(k(p-1)(q-1)+1)modpq
1.如果a不是p的倍數,也不是q的倍數時,則a^(p-1)==1modp(費馬小定理)=>a^(k(p-1)(q-1))==1modp,a^(q-1)==1modq(費馬小定理)=>a^(k(p-1)(q-1))==1modq
所以p,q均能整除a^(k(p-1)(q-1))-1=>pq|a^(k(p-1)(q-1))-1,即a^(k(p-1)(q-1))==1modpq
=>c==a^(k(p-1)(q-1)+1)==amodpq
2.如果a是p的倍數,但不是q的倍數時,則a^(q-1)==1modq(費馬小定理)
=>a^(k(p-1)(q-1))==1modq=>c==a^(k(p-1)(q-1)+1)==amodq=>q|c-a
因p|a
=>c==a^(k(p-1)(q-1)+1)==0modp
=>p|c-a所以,pq|c-a=>c==amodpq
3.如果a是q的倍數,但不是p的倍數時,證明同上
4.如果a同時是p和q的倍數時,則pq|a=>c==a^(k(p-1)(q-1)+1)==0modpq>pq|c-a
=>c==amodpq
Q.E.D.
這個定理說明a經過編碼為b再經過解碼為c時,a==cmodn(n=pq)....
但我們在做編碼解碼時,限制0<=a<n,0<=c<n,
所以這就是說a等於c,所以這個過程確實能做到編碼解碼的功能
還有一些事值得探討的
首先是質數的選取
上一篇提到為了使因數分解發生困難, 所選擇的質數要愈大愈好,但這也意味著, 質數的選取也同樣的困難因為就目前而言,
跟本沒有一個所謂的質數產生公式可用
解析數論上有一個定理, 當 p 很大時, 質數的分布密度與 1/log p 成正比,也就是說一個質數和下一個質數的差平均而言與 log p
成正比還好 log p 的成長並不會很快, 所以就採用一個方法 --- 暴力搜尋法一個數接著一個數找 直到找到質數為止.
即使 n 大到 2^512, 所要花的時間也不會大到天文數字,用 486 的話, 大概在數秒鍾至數十秒之內會找到 (包括判定的時間).
現在有一個問題了 如何去判定一個數是否是質數,因為到目前為止, 並沒有一個很有效的方法來判定,當然有人會問, 為什麽不用試除法.嗯 如果用這個方法,
2^512 這麽大的數, 大概要除個大於 10^30 年.雖然如此, 但還是得去判斷啊
有一個方法, 是利用費馬小定理去做判定的.假設一數 p, 如果 p 是質數, a^p == a mod p,如果 p 不是質數, 那麽 a^p ==
a mod p 雖然也有可能成立,但成立的機率非常小, 而且 p 愈大時機率愈小。用這種方法, 我們就找一些質數來測定, 比如驗證。2^p == 2
mod p, 3^p == 3 mod p, 5^p == 5 mod p 等式是否成立,如此一來, p 是質數的機率就變得非常非常高了
現在來討論 RSA 演演算法編碼解碼的速度
因為我們是對一些很大的數作計算,所以, 一些加減乘除的運算, 必須自己寫成函式來處理這些事就 N-digit key 的資料而言, 加減法需要
O(N) 的時間, 乘除法需要 O(N^2) 的時間至於計算 a^b mod c, 則是需要 O(N^3) 的時間, 亦即, 要對 N-digit
的資料用 N-digit key 作編碼解碼, 是需要 O(N^3) 的時間一般的實作, N 是介於 512 至 1024 之間,
(太小的話很有可能被因數分解開) 所以算算 N^3, 其計算量也是相當驚人的這意味著, 用 RSA 演演算法來編碼解碼其速度是非常慢的 既然 RSA
的速度很慢, 這就表示它並不適合所有情況..... 比如 ftp, 這就不適合全程使用 RSA 作編碼解碼
如何去改善速度? 還記得之前所提到的 DES 吧? RSA 搭配上 DES 的話, 就可以彌補編碼解碼時速度太慢的問題了 先前提到用 DES
作編碼解碼時, 雙方必須使用同一個 key所以, 我們可以用 RSA 演演算法將 DES key 送給對方, 而後接下來的資料, 就全部利用 DES
來做編碼解碼, 如此, 整個過程中, 因使用 RSA 而耗掉的時間就不會太多 再者, 產生 RSA key 所耗掉的時間, 也是相當驚人的先前提到,
以 N-digit key 為例, 兩個相鄰質數平均間隔為 O(N), 對於這些數, 我們要利用費馬小定理去判定是否可能為質數, 而計算 a^b
mod c 所花的時間為 O(N^3), 所以算一算, 平均要找到一個 N-digit 質數, 需費時 O(N^4)所以在產生 RSA key
時也是一件非常耗時的工作所以, 一般的作法是, 先花一大把時間去找 RSA key, 往後的編碼解碼就使用這一組 key 就以
stand-alone telnet daemon 為例好了, 可行的做法是 telnetd 一開始執行時, 先花時間運算出 RSA key, 之後
telnet 連上這個 telnetd 之後, 丟給 telnet 這個 RSA key (public), 然後 telnet 將 DES key
用這個 RSA key 編碼丟後回給 telnetd, 之後的通訊就用這個 DES key 作編碼解碼