以前求逆元只会费马小定理和exgcd,看到别人都用递推求自己不会,今天学习了一下。
我们要在线性时间内求出 1−1,2−1…,(p−1)−1(modp)
递归的时候p也必须为质数
我们要在线性时间内求出 1−1,2−1…,(p−1)−1(modp)
p为质数
inv[1]=1;
for(int i=2;i<=n;i++)
inv[i]=(p-p/i)*inv[p%i]%p;
int Get_inv(int n){
if(n==1)
return 1;
return (p-p/n)*(Get_inv(p%n))%p;
}
递归的时候p也必须为质数
一组例子,n=7,p=18。