扩展欧几里得
思路和推导
裴蜀定理
\(ax + by = c\) 有解 当且仅当 \(\gcd(a, b) | c\)。
求解 \(ax + by = \gcd(a, b)\):
\[
\begin{aligned}
ax + by = \gcd(a, b) = \gcd(b, a \bmod b)\\
bx' + (a \bmod b)y' = \gcd(b, a \bmod b)\\
bx' + (a - \left\lfloor \frac{a}{b} \right\rfloor \times b)y' = \gcd(b, a \bmod b)\\
ay' + b(x' - \left\lfloor \frac{a}{b} \right\rfloor y') = \gcd(b, a\bmod b)
\end{aligned}
\]
因此,我们只需要计算
\[bx' + (a \bmod b)y' = \gcd(b, a \bmod b)\]
的解,就计算出了
\[\left\{\begin{array}{l} x \gets y' \\ y \gets x' - \left\lfloor \frac{a}{b} \right\rfloor y' \end{array}\right.\]
递归的边界为:
当 \(b | a\) 时,方程为 \(ax + by = b\),解得 \(x = 0,\: y = 1\)。
实现
1 2 3 4 5 6 7 |
|
计算同余
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|