逆元
逆元,听起来有点高深(之前学长讲解逆元的时候只给了个公式,然后说对除法取模要用逆元)。
逆元的简单定义
简单来说,逆元的条件需要先满足下面这个式子:
a x ≡ 1 ( m o d m ) ax \equiv 1 \pmod m ax≡1(modm)
其中, gcd ( a , m ) = 1 \gcd(a,m)=1 gcd(a,m)=1,也就是 a a a和 m m m是互质的。这时候, x x x就是 a a a的逆元,可以记为 a − 1 a^{-1} a−1。
(如果你想要更专业的说明的话,请看一本书,叫做《初等数论及其应用》,机械工业出版社(也就是黑皮书)的)
求逆元
求逆元一般有两种方式。一种是利用费马小定理,另一种是使用扩展欧几里得算法。后者适用面更广泛点。
费马小定理
若 p p p是一个素数,且有 gcd ( a , p ) = 1 \gcd(a,p)=1 gcd(a,p)=1,则有:
a p − 1 ≡ 1 ( m o d p ) a^{p-1} \equiv 1 \pmod p ap−1≡1(modp)
这时候把这个式子与逆元的定义式联立起来:
a p − 1 ≡ 1 ( m o d p ) a x ≡ 1 ( m o d m ) a^{p-1} \equiv 1 \pmod p\\ ax \equiv 1 \pmod m a