首页 > 其他 > 详细

总结——数论:乘法逆元

时间:2018-03-06 18:44:25      阅读:196      评论:0      收藏:0      [点我收藏+]

零 乘法逆元

  对于缩系中的元素,每个数a均有唯一的与之对应的乘法逆元x,使得 ax≡1(mod n) 。
  一个数有逆元的充分必要条件是 gcd(a,n)=1 ,此时逆元唯一存在。
  逆元的含义:模 n 意义下,1个数 a 如果有逆元 x ,那么除以 a 相当于乘以 x 。

 

一 扩展欧几里得求逆元

  将方程 ax=1(mod m) 转化为 ax+my=1 ,套用求二元一次方程的方法,用扩展欧几里得算法求得一组 x0,y0 和 gcd。当 gcd=1 时逆元存在,调整 x0 在 [0,m-1] 的范围内即可。时间复杂度为O(ln n)。

 1 typedef  long long ll;
 2 void extgcd(ll a,ll b,ll& d,ll& x,ll& y){
 3     if(!b){ d=a; x=1; y=0;}
 4     else{ extgcd(b,a%b,d,y,x); y-=x*(a/b); }
 5 }
 6 ll inverse(ll a,ll n){
 7     ll d,x,y;
 8     extgcd(a,n,d,x,y);
 9     return d==1?(x+n)%n:-1;
10 }

 

二 费马小定理求逆元

 

总结——数论:乘法逆元

原文:https://www.cnblogs.com/travelller/p/8516001.html

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