初等数论逆元

Posted rign

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初等数论逆元相关的知识,希望对你有一定的参考价值。

逆元定义先摆上来

对于正整数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)
(回头再补上欧拉的公式》?

 

以上是关于初等数论逆元的主要内容,如果未能解决你的问题,请参考以下文章

常用初等数论小知识

初等数论 ——原根指标及其应用

初等数论及其应用——费马小定理

数论——快速幂,模运算及快速幂求逆元

初等数论及其应用——中国剩余定理

数学奥林匹克问题解答:初等数论-2