逆元
逆元
\(x\) 关于 \(p\) 的逆元记为 \(x^{-1}\),定义为 \(x^{-1} = a, ax \equiv 1 \mod p\)。
求逆元的常用方法大概有两种:
法一: 线性求逆元。
已知 \(1^{-1}=1 \mod p\),假设我们要求 \(i\) 的逆元,则 \(p = k \times i + r\)。
这个式子在模意义下就是:
\[k \times i + r \equiv 0 \mod p
\]
同乘 \(i^{-1}r^{-1}\) 就会得到:
\[\begin{align}
k \times r^{-1} + i^{-1} &\equiv 0 \mod p \\
i^{-1} &\equiv -k \times r^{-1} \mod p \\
i^{-1} &\equiv -\left\lfloor \frac{p}{i} \right\rfloor \times (p \bmod i)^{-1} \mod p \\
i^{-1} &\equiv p - \left\lfloor \frac{p}{i} \right\rfloor \times (p \bmod i)^{-1} \mod p \\
\end{align}
\]
于是就可以线性递推求出逆元了。
法二: 快速幂求逆元。
这种求法依赖于费马小定理,因此要求 \(p\) 为素数。定理内容如下:
\[a^{p-1} \equiv 1 \mod p
\]
其中 \(a,p\) 互质。
于是逆元的定义式就可以作以下变换:
\[\begin{align}
ax &\equiv 1 \mod p \\
ax &\equiv a^{p-1} \mod p \\
x &\equiv a^{p-2} \mod p
\end{align}
\]
于是就可以用快速幂 \(O(\log p)\) 时间复杂度计算出 \(a^{p-2} \bmod p\) 的值。
本文来自博客园,作者:So_noSlack,转载请注明原文链接:https://www.cnblogs.com/So-noSlack/p/19274374

浙公网安备 33010602011771号