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)} \]

重复以上过程,即可将所有方程合并为一个,进而求出通解。

posted @ 2025-10-03 11:26  Cefgskol  阅读(9)  评论(0)    收藏  举报