码迷,mamicode.com
首页 > 其他好文 > 详细

【初等数论】逆元

时间:2018-11-19 18:11:50      阅读:703      评论:0      收藏:0      [点我收藏+]

标签:欧几里得   欧拉   amp   font   mil   color   定义   strong   return   

逆元定义先摆上来

对于正整数a和m,如果a*x≡1(mod m),那么把这个同余方程中x的最小正整数解叫做a模m的逆元。

 

求解方法:

1.扩展欧几里得

利用欧几里得求x

先将方程转化为

ax-my=1

此时求解x和y

最后利用返回的gcd(a,m)==1

如果成立,则x为逆元存在,否则不存在

 

注意最后的x要取一下模(x+m)%m

 

void extgcd(long long a,long long b,long long& x,long long& y){
    if(!b){ x=1; y=0;return a;}
    else{ int t=extgcd(b,a%b,y,x); y-=x*(a/b);return t;}
}
long long inverse(long long a,long long b)
{ long long x,y; return extgcd(a,b,x,y)==1?(x+b)%b:-1; }

 

2.费马小定理

p为素数

a(p-1)=1(mod p) 

即a*a(p-2)=1(mod p)

也就是说,a(p-2)为a的逆元

 

这里要用到快速幂模运算求a(p-2)

一般来说在模意义下,进行快速幂模运算

当模p不是素数的时候需要用到欧拉定理

a^phi(p)≡1               (mod p)
a*a^(phi(p)-1)≡1      (mod p)
a^(-1)≡a^(phi(p)-1)  (mod p)
->a^(phi(p)-1)
(回头再补上欧拉的公式》?

 

【初等数论】逆元

标签:欧几里得   欧拉   amp   font   mil   color   定义   strong   return   

原文地址:https://www.cnblogs.com/rign/p/9984430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!