exCRT
别问我为什么不学 CRT 直接学 exCRT,问就是 exCRT 更好理解而且功能更强。
问题
考虑如下一个方程组:
\[\begin{cases}
x \equiv b_1 \pmod{a_1} \\
x \equiv b_2 \pmod{a_2} \\
\dots \\
x \equiv b_n \pmod{a_n}
\end{cases}
\]
该如何求解?我们知道,当所有 \(a_i\) 互质时,可以使用中国剩余定理(CRT)求解。但如果模数不互质呢?这时就需要用到扩展中国剩余定理(exCRT)。
原理
exCRT 的核心思想就是两个字——合并。通过不断合并两个同余方程,最终合并成一个方程,从而方便求解。下面我们来看如何合并两个方程。例如:
\[\begin{aligned}
x &\equiv b_1 \pmod{a_1} \\
x &\equiv b_2 \pmod{a_2}
\end{aligned}
\]
对于任意同余式 \(x \equiv b_1 \pmod{a_1}\),可以写成:
\[x = k a_1 + b_1
\]
将其代入第二个方程,得到:
\[k a_1 + b_1 \equiv b_2 \pmod{a_2}
\]
移项得:
\[k a_1 \equiv b_2 - b_1 \pmod{a_2}
\]
记 \(d = \gcd(a_1, a_2)\),若 \(d \mid (b_2 - b_1)\),则方程有解。此时可设:
\[a_1' = \frac{a_1}{d}, \quad a_2' = \frac{a_2}{d}, \quad b' = \frac{b_2 - b_1}{d}
\]
原同余式化为:
\[k a_1' \equiv b' \pmod{a_2'}
\]
由于此时 \(\gcd(a_1', a_2') = 1\),可求 \(a_1'\) 在模 \(a_2'\) 下的逆元 \(a_1'^{-1}\),解得:
\[k \equiv b' \cdot a_1'^{-1} \pmod{a_2'}
\]
即:
\[k = b' \cdot a_1'^{-1} + t \cdot a_2', \quad t \in \mathbb{Z}
\]
代回 \(x = k a_1 + b_1\),得到:
\[x = (b' \cdot a_1'^{-1} + t a_2') \cdot a_1 + b_1
\]
整理得:
\[x = b' \cdot a_1'^{-1} \cdot a_1 + b_1 + t \cdot (a_1 a_2')
\]
注意 \(a_1 a_2' = \mathrm{lcm}(a_1, a_2)\),因此合并后的新同余方程为:
\[x \equiv b' \cdot a_1'^{-1} \cdot a_1 + b_1 \pmod{\mathrm{lcm}(a_1, a_2)}
\]
重复以上过程,即可将所有方程合并为一个,进而求出通解。

浙公网安备 33010602011771号