歐幾里得算法心得(輾轉(zhuǎn)相除法)

輾轉(zhuǎn)相除法是用來計算兩個整數(shù)的最大公約數(shù)筐咧。假設兩個整數(shù)為ab越妈,他們的公約數(shù)可以表示為gcd(a,b)檩赢。如果gcd(a,b) = c,則必然a = mcb = nc闪盔。a除以b得商和余數(shù),余數(shù)r可以表示為r = a - bk障斋,k這里是系數(shù)纵潦。因為cab的最大公約數(shù),所以c也一定是r的最大公約數(shù)垃环,因為r = mc - nck = (m-nk)c邀层。

因此gcd(a,b) = gcd(b,r),相當于把較大的一個整數(shù)用一個較小的余數(shù)替換了晴裹,這樣不斷地迭代被济,直到余數(shù)為0,則找到最大公約數(shù)涧团。

舉例兩個整數(shù)為1071462
第一步:1071 / 462 = 2 * 462 + 147
第二步:462 / 147 = 3 * 147 + 21
第三步:147 / 21 = 7 * 21 + 0

此時余數(shù)為零只磷,則21為兩個數(shù)的最大公約數(shù)经磅。

貝祖公式表明對于任意兩個整數(shù)ab,都可以找到一對可為負的整數(shù)xy钮追,可以使等式xa + yb = m预厌,其中m為ab的最大公約數(shù),合理性稍加思考可得元媚。如果m1說明ab互素轧叽。所以在互素的情況下,xa + yb = 1刊棕。這個等式對于求乘法逆元有很大的幫助炭晒。

那么如何通過貝祖公式及擴展歐幾里得算法來求乘法逆元呢?舉一個例子來描述什么是乘法逆元甥角。如果ab mod m = 1网严,或者可以表示為ab ≡ 1 mod m,這里b就是a關(guān)于模數(shù)m的乘法逆元嗤无。計算乘法逆元的方法就是擴展歐幾里得算法震束,以下通過一個例子來幫助理解:

假設我們要求3 關(guān)于模26的乘法逆元(隱含了326的最大公約數(shù)為1,即互素)当犯。當a = 3垢村,b = 26,則根據(jù)貝祖公式嚎卫,存在整數(shù)xy嘉栓,3x + 26y = 1

思路就是等號兩邊同時mod 26驰凛,等式則變成(3x + 26y) mod 26 = 1 mod 26胸懈,根據(jù)模運算的性質(zhì)(a + b) mod m = (a mod m + b mod m) mod m

所以展開等式(3x mod 26 + 26y mod 26) mod 26 = 1 mod 26恰响。化簡最終得到(3x mod 26) mod 26 = 1 mod 26涌献。我們發(fā)現(xiàn)3x mod 26 = 1正好符合了乘法逆元的定義胚宦,所以歐幾里得算法就是解x的關(guān)鍵。

下面將通過輾轉(zhuǎn)相除法來求x

第一步:26 = 3 * 8 + 2
第二步:3 = 2 * 1 + 1

統(tǒng)一將余數(shù)換到等號左邊:
2 = 26 - 3 * 8
1 = 3 - 2 * 1

將第一行的2替換到第二行燕垃,保證等式左邊永遠為1枢劝,等式右邊變成僅由3x + 26y組成。
1 = 3 - (26 - 3 * 8) * 1 = 3 * 9 + (-1) * 26
可得x = 9
最后9就是3關(guān)于模26的乘法逆元卜壕。它可以應用于仿射加密您旁。

附:仿射加密的公式e(x) = ax + b mod m, 其中am互素轴捎, b為移動距離鹤盒。
仿射解密公式d(x) = a-1(x - b) mod m

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚕脏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子侦锯,更是在濱河造成了極大的恐慌驼鞭,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尺碰,死亡現(xiàn)場離奇詭異挣棕,居然都是意外死亡,警方通過查閱死者的電腦和手機亲桥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門洛心,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人题篷,你說我怎么就攤上這事皂甘。” “怎么了悼凑?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵偿枕,是天一觀的道長。 經(jīng)常有香客問我户辫,道長渐夸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任渔欢,我火速辦了婚禮墓塌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奥额。我一直安慰自己苫幢,他們只是感情好,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布垫挨。 她就那樣靜靜地躺著韩肝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪九榔。 梳的紋絲不亂的頭發(fā)上哀峻,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機與錄音哲泊,去河邊找鬼剩蟀。 笑死,一個胖子當著我的面吹牛切威,可吹牛的內(nèi)容都是我干的育特。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼先朦,長吁一口氣:“原來是場噩夢啊……” “哼缰冤!你這毒婦竟也來了犬缨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锋谐,失蹤者是張志新(化名)和其女友劉穎遍尺,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涮拗,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡乾戏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了三热。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鼓择。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖就漾,靈堂內(nèi)的尸體忽然破棺而出呐能,到底是詐尸還是另有隱情,我是刑警寧澤抑堡,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布摆出,位于F島的核電站,受9級特大地震影響首妖,放射性物質(zhì)發(fā)生泄漏偎漫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一有缆、第九天 我趴在偏房一處隱蔽的房頂上張望象踊。 院中可真熱鬧,春花似錦棚壁、人聲如沸杯矩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽史隆。三九已至,卻和暖如春在刺,著一層夾襖步出監(jiān)牢的瞬間逆害,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工蚣驼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人相艇。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓颖杏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親坛芽。 傳聞我的和親對象是個殘疾皇子留储,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容