歐幾里得算法與擴展歐幾里得算法

歐幾里得算法

歐幾里得算法,也叫展轉相除,簡稱 gcd,用於計算兩個整數的最大公約數算法

  定義 gcd(a,b) 爲整數 a 與 b 的最大公約數spa

給定整數a和b,且b>0,重複使用帶餘除法,即每次的餘數爲除數去除上一次的除數,直到餘數爲0,這樣能夠獲得下面一組方程:
a = bq1+r1, 0 < r1 <b,
b = r1q2+r2, 0 < r2 < r1,
r1 = r2q3+r3, 0 < r3 < r2,
……
rj-1 = rjqj+1
最後一個不爲0的餘數rj就是a和b的最大公因子code

求gcd (19701066)
用歐幾里德算法的計算過程以下:
19701×1066+904
10661×904+162
9045×162+94
162=1×94+68
941×68+26
682×26+16
261×16+10
161×10+6
101×6+4
6=1×4+2
42×2+0
所以gcd (19701066) = 2

 

 

 擴展歐幾里得算法

1.可以肯定兩個正整數的最大公約數
2.若是這兩個正整數互素(互質),還能肯定他們的逆元blog

若是整數n≥1,且gcd(a,n)=1,那麼a有一個模n的乘法逆元a-1。即對小於n的正整數a,存在一個小於n的整數a,存在一個小於n的整數a-1,使得a * a-1≡1 mod n。table

 

 

 (1)1234 mod 4321 用擴展歐幾里德算法的計算過程以下:class

循環次數 Q X1 X2 X3 Y(T1) Y(T2) Y(T3)
初始值 - 1 0 4321 0 1 1234
1 3 0 1 1234 1 -3 619
2 1 1 -3 619 -1 4 615
3 1 -1 4 615 2 -7 4
4 153 2 -7 4 -307 1075 3
5 1 -307 1075 3 309 -1082 1

- 1082 =3239 mod 4321,因此逆元是 3239擴展

(2)24140 mod 40902循環

循環次數 Q X1 X2 X3 Y(T1)
Y(T2) Y(T3)
初始值 - 1 0 40902 0 1 24140
1 1 0 1 24140 1 -1 16762
2 1 1 -1 16762 -1 2 7378
3 2 -1 2 7378 3 -5 2006
4 3 3 -5 2006 -10 14 1360
5 1 -10 14 1360 13 -19 646
6 2 13 -19 646 -36 52 68
7 9 -36 52 68 326 -487 34
8 2 326 -487 34 -688 1026 0

無逆元gc

相關文章
相關標籤/搜索