中国剩余定理(新)

定理内容

中国剩余定理(孙子定理),这是用来解出一堆线性同余方程组同一解的定理,通常会给出一对同余方程。如下,其中任意两个 \(mi\) 互质,求解 \(x\)

\[\begin{aligned} x &\equiv a_1 \pmod {m_1} \\ x & \equiv a_2 \pmod {m_2} \\ x & \equiv a_3 \pmod {m_3} \\ & \dots \\ x & \equiv a_n \pmod {m_n} \end{aligned} \]

在定理中设有几个变量 \(M,M_i,t_i\),对于他们有关系

\[\begin{aligned} &M = m_1 \times m_2 \times m_3 \times \dots \times m_n \\ &M_i = M \div m_i \\\\ &M_i \times t_i \equiv 1 \pmod {m_i} \end{aligned} \]

可以看出,其中 \(t_i\)\(M_i\) 关于 \(m_i\) 的逆元。而 \(x\)

\[x = \sum^{n}_{i = 1} a_i \times M_i \times t_i \]

证明

由上面我们可以知道,中国剩余定理是通过构造来得到一组解, 因此只需要证明可行性即可。

你可以尝试带入进去。比如这里带入第一个式子 \(x \equiv a_1 \pmod {m_1}\)。因为 \(x\) 中除了第 \(1\) 项, 其他所有的 \(a_i \times M_i \times t_i\) 中的 \(M_i\) 里面都有 \(m_1\) 这个因子,那么其他项就可以被取模 \(m_1\) 给完美消掉,只剩下第一项 \(a_1 \times M_1 \times t_1\)

又因为 \(M_i \times t_i \equiv 1 \pmod m_i\), 那么M1 * t1 在取模 \(m_1\) 下就为 \(1\) ,那么就只剩下 \(a_1\),符合等式 \(1\),对于其他的等式同理, 这就说明,这是一个正确解。

关于 \(t_i\) 一定有解。
因为

\[\begin{aligned} &M_i \times t_i \equiv 1 \pmod {m_i} \\ &Mi = M \div m_i \\ &\gcd(m_i,m_j) = 1,i \not = j \end{aligned} \]

通过裴蜀定理可得式子

\[M_i \times x + m_i \times y = 1 \]

\(M_i \times t_i \equiv 1 \pmod {m_i}\),可以化成等式 \(M_i \times t_i + m_i \times y = 1\)
那么 \(M_i \times x + m_i \times y = 1\) 中的 \(x\) 就是 \(t_i\)\(M_i\times x + m_i \times y = 1\) 存在,等式\(M_i \times t_i + m_i \times y = 1\) 就一定存在,\(x\) 一定有解,即 \(t_i\) 一定有解,那么 \(t_i\) 就一定可以通过 exgcd 求出。

值得一提的是 \(M\) 是所有 \(m_i\) 的乘积,那么通解应该也就知道了,即 \(x = x_0 + k \times M\)
\(x\) 加上 \(k\)\(M\) 不影响每个 \(m_i\) 取余,它还是 \(a_i\),也就都是合法解。(这里有多组解的原因也是, 有 \(n\) 个式子但能找出来 \(n + 1\) 个未知数(把同余方程列乘等式),因此有无数解)

所以最小正整数解就是用代码就是 (x % M + M) % M

posted @ 2024-06-04 15:36  blind5883  阅读(19)  评论(0编辑  收藏  举报