数学(4)——中国剩余定理

有如下一元线性同余方程组(保证\(n_1, n_2, \cdots, n_k\)互质)。

\[\begin{cases} x &\equiv a_1 \pmod {n_1} \\ x &\equiv a_2 \pmod {n_2} \\ &\vdots \\ x &\equiv a_k \pmod {n_k} \\ \end{cases} \]


\[\texttt{Solving} \]


求出

\[\N=\prod_{i=1}^{k}n_i \]

分别计算

\[m_i=\frac{\N}{n_i},m_i^{-1} \ (m_i \bmod n_i) \]

得到每个

\[c_i=m_i\times m_i^{-1} \]

可以得出方程组的唯一解是

\[x=\sum_{i=1}^{k}a_i\times c_i (\bmod \N) \]


\[\texttt{Proof} \]


取第 \(i\) 个和第 \(j\) 个( \(i\neq j\) ),有 \(m_j \equiv 0 \pmod {n_i}\)

\[\therefore c_j\equiv m_j \equiv 0 \pmod{n_i} \]

\[又 \ c_i\equiv m_i (m_i^{-1} \bmod n_i)\equiv 1 \pmod{n_i} \]

\[\begin{aligned} \therefore x&\equiv \sum_{j=1}^{k} a_j \times c_j & \pmod{n_i}\\ &\equiv a_i \times c_i & \pmod{n_i}\\ &\equiv a_i \times m_i & \pmod{n_i}\\ &\equiv a_i &\pmod{n_i} \end{aligned} \]

对于任意的 \(i\in [1,k]\) , 满足 \(x \equiv a_i \pmod{n_i}\)

\[\texttt {QED} \]


求逆元多种方法都可以,这里 \(n_i\) 不一样所以线性推貌似不能用,建议用 exgcd()


未完待续……

如果遇到不保证 \(n_i\) 互质的情况怎么办。

不互质会导致 \(m_i^{-1}\pmod{n_i}\) 不存在,因为存在任意一组 \(n_i,n_j\) 不互质就会导致存在 \(m_i\)\(n_i\) 不互质,因为 \(m_i\) 中自然有 \(n_j\) 这个因子。显然 \(m_i^{-1}\) 也不存在。

那么如何解决这个问题呢,因为不互质是成队出现的情况,所以我们只需要将那些不互质组的分离再求解,然后再合并这些解就可以解决了,具体实现方法就是关键字合并

稍微进行一下推导,写式子我还是不太在行。

假设子任务方程组是前两个。

\[\begin{cases} x \equiv a_1 \pmod{n_1} \\ x \equiv a_2 \pmod{n_2} \end{cases} \]

那么可以表示为

\[\begin{cases} x = a_1 + k_1n_1 \\ x = a_2 + k_2n_2 \end{cases} \]

\[k_1n_1-k_2n_2=a_2-a_1\\ 约定 G= \gcd(n_1,n_2)\\ \frac{n_1}{G}k_1-\frac{n_2}{G}k_2=\frac{(a_2-a_1)}{G}\\ \therefore \frac{n_1}{G}k_1\equiv \frac{(a_2-a_1)}{G}\pmod{\frac{n_2}{G}}\\ k_1\equiv(\frac{n_1}{G})^{-1}\times\frac{(a_2-a_1)}{G}\pmod{\frac{n_2}{G}}\\ \therefore k_1=(\frac{n_1}{G})^{-1}\times\frac{(a_2-a_1)}{G}+\frac{n_2}{G}\times y \]

带入 \(x=a_1+k_1n_1\)

\[x=a_1+((\frac{n_1}{G})^{-1}\times\frac{(a_2-a_1)}{G}+\frac{n_2}{G}\times y)\times n_1\\ x=a_1+(\frac{n_1}{G})^{-1}\times\frac{(a_2-a_1)}{G}\times n_1+\frac{n_2n_1}{G}\times y \\ x\equiv (\frac{n_1}{G})^{-1}\times\frac{(a_2-a_1)}{G}\times n_1+a_1 \pmod{\frac{n_1n_2}{G}} \]

我们发现 \(\displaystyle \frac{n_1n_2}{G}\) 就是 \(\text{lcm} (n_1,n_2)\)

所以就可以一直通过以上式子合并,如果合并时发现无解就自然整个方程组无解。


Reference:

posted @ 2020-12-20 23:25  Reywmp  阅读(154)  评论(0编辑  收藏  举报