首页 理论教育 如何求乘法逆元:欧几里得算法

如何求乘法逆元:欧几里得算法

时间:2023-07-02 理论教育 版权反馈
【摘要】:定义11.6 对于整数a和正整数n,当gcd(a,n)=1时存在整数c,使得ac≡1称c为a关于模n的乘法逆元,记为a-1。设c1和c2都是a的模n乘法逆元,即ac1≡1,ac2≡1,从而a≡0,因为gcd(a,n)=1,所以n|,c1和c2关于模n同余。扩展的欧几里得算法为此方法的实现,其确定两个正整数的最大公约数或者互素的两个正整数的各自的乘法逆元。

如何求乘法逆元:欧几里得算法

定义11.6 对于整数a和正整数n,当gcd(an)=1时存在整数c,使得

ac≡1(mod n)称ca关于模n的乘法逆元,记为a-1

根据互素的性质4),存在整数st,使得as+nt=1,而nt≡0(mod n),所以只需取c=s即可。同样地,如果a也是正整数,则tn关于模a的乘法逆元。

乘法逆元并不唯一,如只要ac≡1(mod n)成立,则对任意的整数h,也有ac+nh)≡1(mod n),即c+nh也是a的模n乘法逆元。但是在模n意义下,是唯一的。

定理11.9 如果gcd(an)=1,n为正整数,则a的所有模n乘法逆元都是模n同余的。

c1c2都是a的模n乘法逆元,即ac1≡1(mod n),ac2≡1(mod n),从而ac1-c2)≡0(mod n),因为gcd(an)=1,所以n|(c1-c2),c1c2关于模n同余。

根据前面的分析知,对于互素的两个数an,要求a关于模n的乘法逆元,只需要求出表达式as+nt=1的一组解(st)即可。

根据欧几里得算法可得

978-7-111-37285-1-Chapter11-21.jpg

最后得到rn关于ab的线性组合表达式,如果rn=1,ab都为正整数,则组合表达式中ab的系数对应各自关于对方的乘法逆元;如果rn≠1,rn+1=0,则rnab的最大公因子。

扩展的欧几里得算法为此方法的实现,其确定两个正整数的最大公约数或者互素的两个正整数的各自的乘法逆元。其算法描述如下:

Extended EUCLID(aba>0,b>0)

1)(X1X2X3)←(1,0,b);(Y1Y2Y3)←(0,1,a)(www.xing528.com)

2)如果Y3=0返回X3=gcd(ab);无逆元

3)如果Y3=1返回Y3=gcd(ab);Y2=a-1(mod b

4)q=978-7-111-37285-1-Chapter11-22.jpgX3/Y3

5)978-7-111-37285-1-Chapter11-23.jpg

6)(X1X2X3)←(Y1Y2Y3

7)(Y1Y2Y3)←(T1T2T3

8)回到2)

其中的978-7-111-37285-1-Chapter11-24.jpgX3/Y3」表示不大于X3/Y3的最大正整数。

【例11-17】 用扩展的欧几里得算法求550-1mod 1769。

【解析】 求550-1mod 1769的算法过程如表11-1所示,其中t为算法循环次数。当t=7时,Y3=1,此时,Y2=550,即550-1(mod 1769)≡550。

表11-1 求550-1mod 1769的算法过程

978-7-111-37285-1-Chapter11-25.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈