标签:欧几里得 欧拉 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)
一般来说在模意义下,进行快速幂模运算
标签:欧几里得 欧拉 amp font mil color 定义 strong return
原文地址:https://www.cnblogs.com/rign/p/9984430.html