扩展中国剩余定理(EXCRT)

发布时间 2023-06-15 16:58:15作者: Joker__King

中国剩余定理(CRT)不能解决模数不互质情况的模线性同余方程组。这是中国剩余定理的原理所决定的。

但当我们的模数不互质时,这个方式显然就寄掉了,因此我们要打破原有的思路,去找一个新的方式解不定方程组,这时我们的扩展中国剩余定理(EXCRT)就出现了

假设我们现在有如下不定方程组

\[\begin{cases} x \equiv r_1(mod \ m_1) \\ x \equiv r_2(mod \ m_2) \\ x \equiv r_3 (mod \ m_3) \\ \cdot \cdot \cdot \cdot \cdot \cdot \cdot\end{cases} \]

显然我们可以得到 $ x = m_1k_1 + r_1 = m_2k_2 + r_2$ ---------- \((1)\)

则我们移项可得 $ m_1k_1 + m_2k_2 = r_2 - r_1$ ---------- \((2)\)

这里我们 \(m_2k_2\) 的系数变为正,是因为 \(k_2\) 是任意整数,所以前面的系数不会影响整个式子)

我们已知式子 \(m_1p_1 + m_2p_2 = \gcd(m_1,m_2)\)\(d\) 设为 $ \gcd(m_1,m_2) $ 。

根据裴蜀定理,此时我们要进行判断,判断 \(r_2-r_1\) 是否为 \(\gcd(m_1,m_2)\) 的倍数,若是,那么有解,若不是,那么无解。

判断完是否有解后我们可以的到一个显然的式子 \(m_1p_1+m_2p_2+km_1m_2-km_1m_2=m_1p_1+m_2p_2=d=\gcd(m_1,m_2)\)

此时最左边的式子我们可以化简为 \(m_1(p_1+km_2)+m_2(p_2-km_1)=d\)

由于我们要找到原式子的通解,所以此时我们将等式两边同乘 $ \dfrac {r_2-r_1}{\gcd(m_1,m_2)} $

则可以得到式子 \(m_1(\dfrac {p_1(r_2-r_1)}{\gcd(m_1,m_2)} + \dfrac {km_2(r_2-r_1)}{\gcd(m_1,m_2)}) + m_2(\dfrac {p_2(r_2-r_1)}{\gcd(m_1,m_2)}- \dfrac {km_1(r_2-r_1)}{\gcd(m_1,m_2)}) = r_2-r_1\) ---------- \((3)\)

由上面的等式 \((2)\) 得可将 \((3)\) 式右面 \(r_2-r_1\) 的式子代换成 $ m_1k_1 + m_2k_2 $

从而得到的等式 $m_1(\dfrac {p_1(r_2-r_1)}{\gcd(m_1,m_2)} + \dfrac {km_2(r_2-r_1)}{\gcd(m_1,m_2)}) + m_2(\dfrac {p_2(r_2-r_1)}{\gcd(m_1,m_2)}- \dfrac {km_1(r_2-r_1)}{\gcd(m_1,m_2)}) = m_1k_1 + m_2k_2 $

由此我们显然可以得到

\[m_1k_1 = m_1(\dfrac {p_1(r_2-r_1)}{\gcd(m_1,m_2)} + \dfrac {km_2(r_2-r_1)}{\gcd(m_1,m_2)}) \]

\[m_2k_2 = m_2(\dfrac {p_2(r_2-r_1)}{\gcd(m_1,m_2)} - \dfrac {km_1(r_2-r_1)}{\gcd(m_1,m_2)}) \]

消掉第一个式子中的 \(m_1\) 。则我们求得 \(k_1=p_1\dfrac {(r_2-r_1)}{\gcd(m_1,m_2)} + km_2 \dfrac {(r_2-r_1)}{\gcd(m_1,m_2)}\) ---------- \((4)\)

我们将现在得到的等式 \((4)\) 带入等式 \((1)\) 则显然可以得到

\[x = m_1(p_1\dfrac {(r_2-r_1)}{\gcd(m_1,m_2)} + km_2 \dfrac {(r_2-r_1)}{\gcd(m_1,m_2)}) + r_1 \]

化简得

\[x = p_1m_1\dfrac {(r_2-r_1)}{\gcd(m_1,m_2)} + km_1m_2 \dfrac {(r_2-r_1)}{\gcd(m_1,m_2)} + r_1 \]

由于 \(k\) 是任意的整数,因此我们可以将 \(k\) 的系数化成 \(m_1m_2 \dfrac {1}{\gcd(m_1,m_2)}\)

从而得到最终的式子

\[x = p_1m_1\dfrac {(r_2-r_1)}{\gcd(m_1,m_2)} + km_1m_2 \dfrac {1}{\gcd(m_1,m_2)} + r_1 \]

我们此时显然是知道 \(m_1,m_2,r_1,r_2,p_1,\gcd(m_1,m_2)\) 的值,但我们不知道 \(k\) 的值,那么这时我们只要模上 \(k\) 的系数即可消掉 \(k\) 。即把模数变为 \(m_1m_2 \dfrac {(r_2-r_1)}{\gcd(m_1,m_2)}\)

此时我们就将两个不定方程组合并完成了

\(x \equiv p_1m_1\dfrac {(r_2-r_1)}{\gcd(m_1,m_2)} + r_1 (mod \ \dfrac {m_1m_2}{\gcd(m_1,m_2)})\)

则此时新的不定方程的 \(r\)\(\dfrac {(r_2-r_1)}{\gcd(m_1,m_2)} + r_1\) , \(m\)\(\dfrac {m_1m_2}{\gcd(m_1,m_2)}\)

再继续往下合并

最后我们可以合并成唯一一个式子 \(x \equiv r(mod \ m)\)

\(x\) 的最小整数解为 $ x = ( r \ mod \ m + m ) \ mod \ m $

\(r \ mod \ m+m\) 中加 \(m\) 是为了防止出现 \(r\) 为负数的情况)