目录
逆元的定义
根据前面的定义:对于模数 (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);