逆元
定义
若\(a\times x\equiv1 (\bmod b)\) and \(gcd(a,b)=1\),那么\(x\)为\(a\)模\(b\)意义下的逆元(倒数),记为\(a^{-1}\)或\(inv(a)\)。
作用
带除同余计算。对于\(\frac{a}{b}(\bmod p)\),可以求出\(b\)在\(\bmod p\)意义下的逆元乘上\(a\)并模\(p\)即可算出表达式的值。
算法
拓展欧几里得
利用拓欧求解线性同余方程\(a\times x \equiv 1 (\bmod {b})\),转化求解为\(a\times x+b\times y=1\)。
类欧几里得
仅当\(b\)为质数。
原式为:\(a\times x\equiv 1 (\bmod {b})\)
设 \(x=p\bmod a\), \(y={(p-x)}\div a\)
则 \(x+y\times a=p \Rightarrow (x+y\times a)\bmod p=0\)
移项 \(x\bmod p=(-y)\times a\bmod p\)
继续 \(x\times a^{-1}\bmod p=(-y)\bmod p\)
则 \(a^{-1}=(p-y)\times x^{-1}\bmod p\)
即:\(inv(a)=(p-(p-p\bmod a)\div a)\times inv(p\bmod a)\bmod p\),递归进行即可,其中\(inv(1)=1^{-1}=1\)。
快速幂
利用费马小定理:若\(b\)为素数,\(a\)为正整数,且\(a\)、\(b\)互质。 则有\(a^{p-1} \equiv 1 (\bmod {b})\) 。
代入式子:\(a\times x\equiv 1 (\bmod {b})\)
则 \(a\times x\equiv a^{b-1} (\bmod {b})\)
即 \(x \equiv a^{b-2} (\bmod {b})\)
则利用快速幂即可算出。
线性递推
用于求一连串数字对于一个\(\bmod p\)的逆元。可以参考法2改为递推。
如\(i^{-1}\Leftarrow (p-(p-p\bmod a)\div a)\times (p\bmod a)^{-1}\bmod p\)
总结
拓展欧几里得最通用。法2,3,4有前提\(p\)为质数。