乘法逆元的求法

目录

目录地址

上一篇

下一篇


逆元的定义

根据前面的定义:对于模数 (m) ,若对于剩余类 ([a]) ,存在剩余类 ([b]) 使得 ([a]cdot [b]=[1]) 则称呼 ([b])([a]) 的逆元

我们写成同余的形式:若对于模数 (m) 和整数 (a) ,若 (bcdot aequiv 1(mod m)) 则称呼 (b)(a) 的逆元,记为 (a^{-1})(oldsymbol{Inv}(a))

根据裴属定理,只有 (ax+my=kcdot gcd(a,m),kin Z_+) 有解

因此,只有 (axequiv kcdot gcd(a,m)(mod m)) 是有解的

因此,(a) 有逆元的充要条件为 (gcd(a,m)=1)


逆元的性质

我们证明,逆元在取模意义下是唯一的:设 (b,c) 同时是 (a) 的逆元,且 (b otequiv c(mod m))

(bequiv bcdot 1equiv bcdot(acdot c)equiv (bcdot a)cdot cequiv 1cdot cequiv c(mod m))

与条件相悖,故 (bequiv c(mod m))

故我们知道,对于一个剩余类,它的逆元是唯一的

但对于一个数,它的逆元是无穷多个的,我们一般称 (0leq a^{-1}<m) 的那个为逆元

额外的,逆元还具有积性:

((ab)^{-1}equiv a^{-1}cdot b^{-1}(mod m))


逆元的求法

根据拓展欧几里得算法(exgcd)可以求出确定的

(ax+my=gcd(a,m))(x,y)

(gcd(a,m)=1)(a) 有一个逆元为 (x)

故所求逆元为 (( (xmod m)+m)mod m)

int x,y,g=exgcd(a%m,m,x,y),inv;
if(g==1) inv=(x%m+m)%m;

同时,由于 (gcd(a,m)=1) 我们还可以根据欧拉定理

(a^{-1}cdot aequiv 1equiv a^{oldsymbolvarphi(m)-1}equiv a^{oldsymbolvarphi(m)-2}cdot a(mod m))

(a^{-1}equiv a^{oldsymbolvarphi(m)-2}(mod m))

int inv=fpow(a%m,phi(m)-2,m);
原文地址:https://www.cnblogs.com/JustinRochester/p/12394019.html