欧几里得算法与扩展欧几里得算法    

 

欧几里得算法

欧几里得算法,也叫辗转相除,简称 gcd,用于计算两个整数的最大公约数

  定义 gcd(a,b) 为整数 a 与 b 的最大公约数

给定整数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的最大公因子

求gcd (1970,1066)用欧几里德算法的计算过程如下:1970=1×1066+9041066=1×904+162904=5×162+94162=1×94+6894=1×68+2668=2×26+1626=1×16+1016=1×10+610=1×6+46=1×4+24=2×2+0因此gcd (1970,1066) = 2

欧几里得算法与扩展欧几里得算法_企业信息化

 

 

 扩展欧几里得算法

1.能够确定两个正整数的最大公约数
2.如果这两个正整数互素(互质),还能确定他们的逆元

如果整数n≥1,且gcd(a,n)=1,那么a有一个模n的乘法逆元a-1。即对小于n的正整数a,存在一个小于n的整数a,存在一个小于n的整数a-1,使得a * a-1≡1 mod n。

欧几里得算法与扩展欧几里得算法_企业信息化_02

 

 

 (1)1234 mod 4321 用扩展欧几里德算法的计算过程如下:

循环次数 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

无逆元