【数论】逆元


\(b, m\) 互质,并且 \(b | a\),则存在一个整数 \(x\) 使得 \(\dfrac{a}{b} \equiv a \times x \ (\bmod m)\)。则称 \(x\)\(b\) 的模 \(m\) 乘法逆元,记作 \(b^{-1}(\bmod m)\)

就例如 \(b=31, m=5, a=93\),就存在 \(x=1\) 满足 \(\dfrac{93}{31} \equiv 93 \times 1 \ (\bmod 5)\)

因为乘法满足模,即 \((a \times b) \bmod m = (a \bmod m) \times (b \bmod m)\)

而除法不满足,故乘法逆元就可以很好地解决这个问题,即 \(\dfrac{a}{b} \bmod m=((a \bmod m) \times (b^{-1} \bmod m)) \bmod m\)


这里介绍三种求逆元的方法:


因为 \(\dfrac{a}{b}\equiv a \times b^{-1} \equiv \dfrac{a}{b} \times b \times b^{-1} \ (\bmod m)\),所以 \(b * b^{-1} \equiv 1 (\bmod m)\)

其实也就是要找到一个 \(x\),满足 \(b \times x \equiv 1 (\bmod m)\)

\(m\) 为质数时,根据费马小定理 \(b^p \equiv b \ (\bmod m)\) 可得:\(b \times b^{p-2} \equiv 1 \ (\bmod m)\)

因此,当模数 \(m\) 为质数时,\(b^{m-2}\) 就是 \(b\) 的模 \(m\) 乘法逆元。


第一种方法说过,

其实也就是要找到一个 \(x\),满足 \(b \times x \equiv 1 (\bmod m)\)

故我们可以使用扩展欧几里得来求解 \(x\)


这里介绍一个线性求 \(1 \sim n\) 在模 \(m\) 的逆元。

我们设 \(m = q \times d + r ~ (r < d)\)

可以得到;

  1. \(q \times d + r \equiv 0 \ (\bmod \ m)\)
  2. \(q=\left\lfloor\dfrac{m}{d}\right\rfloor\)
  3. \(m \ \bmod d = (q \times d + r) \ \bmod \ d = r\)\(r = m \ \bmod \ d\)

对于式子 \(1\) 两边同乘 \(d^{-1} \times r^{-1}\)

得到 \(q \times r^{-1} + d^{-1} \equiv 0 \ (\bmod \ m)\)

\(d^{-1} \equiv -q \times r^{-1} \ (\bmod \ m)\)

\(d^{-1} \equiv -\left\lfloor\dfrac{m}{d}\right\rfloor \times (m \ \bmod d) ^ {-1} \ (\bmod \ m)\)

根据前面的 \((m \ \bmod d) ^ {-1}\) 推出后面的 \(d^{-1}\)

code

冲冲冲