首页 > 其他 > 详细

乘法逆元

时间:2017-08-01 23:43:36      阅读:173      评论:0      收藏:0      [点我收藏+]

定义:当(a,p)=1时,存在ax≡1(mod p),则x叫作a在模p意义下的乘法逆元。

求法:

1.当p为质数时,由费马小定理,得ap-1≡1(mod p),即(a·ap-2)≡1(mod p),则a在模p意义下的乘法逆元是ap-2,直接用快速幂可求得。

2.当p不为质数时,用扩展欧几里得算法求a的逆元。

代码:

 1 int exgcd(int a,int b,int &x, int &y)
 2 {
 3     int d=a;
 4     if(b!=0){
 5         d=exgcd(b,a%b,y,x);
 6         y-=(a/b)*x;
 7     }
 8     else{
 9         x=1;
10         y=0;
11     }
12     return d;
13 }
14 int mod_inverse(int a,int p)
15 {
16     int x, y;
17     int d=exgcd(a,p,x,y);
18     return (p+x%p)%p;
19 }

 应用:计算(a/b)%p时,(比如求组合数取模),可以转化为a*c%p,其中c是b在模p意义下的乘法逆元。

乘法逆元

原文:http://www.cnblogs.com/let-dream-fly/p/7271488.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!