乘法逆元的定义
对a∈Zm,存在b∈Zm,使得a×b ≡1 (mod m),则称b为a的乘法逆元。
条件
对于乘法逆元:在mod m的操作下(即Zm中),a存在乘法逆元当且仅当a与m互质。不定方程ab+mx=1的任意一组整数解(b,x),b就是a的乘法逆元。具体计算可以使用扩展欧几里德算法(Extended-GCD)。
//******************************
//返回d=gcd(a,b);和对应于等式ax+by=d中的x,y
long long extend_gcd(long long a,long long b,long long &x,long long &y)
{
if(a==0&&b==0) return -1;//无最大公约数
if(b==0){x=1;y=0;return a;}
long long d=extend_gcd(b,a%b,y,x);
y-=a/b*x;
return d;
}
//*********求逆元素*******************
//ax = 1(mod n)
long long mod_reverse(long long a,long long n)
{
long long x,y;
long long d=extend_gcd(a,n,x,y);
if(d==1) return (x%n+n)%n;
else return -1;
}
费马小定理求逆元
//要求mod为素数
LL cal(LL x)
{
LL res=1;
int k=mod-2;
while(k)
{
if(k&1)
{
res*=x;
res%=mod;
}
x*=x;
x%=mod;
k>>=1;
}
return res;
}
利用欧拉函数
//mod为素数,而且a和m互质
long long inv(long long a,long long mod)//mod为素数
{
return pow_m(a,mod-2,mod);
}
- 版权声明:本文基于《知识共享署名-相同方式共享 3.0 中国大陆许可协议》发布,转载请遵循本协议
- 文章链接:http://www.carlstedt.cn/archives/951 (转载时请注明本文出处及文章链接)


发表评论
快来吐槽一下吧!