扩展欧几里得求逆元:
int extgcd(int a, int b, int &x, int &y)
{
int d = a;
if(b != 0)
{
d = extgcd(b, a%b, y, x);
y -= (a / b) * x;
}
else x = 1, y = 0;
return d;
}
int mod_inv(int a, int p) //求a模p的逆元,要求a与p互质
{
//即是求ax≡1(mod p)中的x的最小正整数,转换一下就是ax+py=1,若a与p不互质,显然无解。若p为负直接p = abs(p)
int x, y;
extgcd(a, p, x, y);
return (x%p + p) % p;
}
费马小定理求逆元:
费马小定理 :设 p 为质数,且
当满足以上条件时,根据费马小定理可得 a∗ap−2