线性同余方程组

今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?

上述问题便是一个具体线性同余方程组。所谓线性同余方程组,就是形如:

\[\left\{\begin{array}{c} {x \equiv a_{1}\pmod {m_{1}}} \\ {x \equiv a_{2}\pmod {m_{2}}} \\ {\vdots} \\ {x \equiv a_{n}\pmod {m_{n}} }\end{array}\right. \]

的方程组。

中国剩余定理

中国剩余定理是用于解决线性同余方程组的问题。
要使用中国剩余定理,必须得保证任意两个模数之间互质。

先说结论,上述方程的解为:

\[x = \sum_{i = 1}^{n}a_iM_ib_i \\ \]

其中,\(M_i = \prod_{j = 1(i \neq j)}^{n}m_j\)\(b_i\)\(M_i\)的逆元。

对于中国剩余定理,我们可以这样理解:

对于方程组中,第 \(i\)个方程,如果能构造出这样一个解 \(x_i\),使得 \(x_i \equiv a_i \pmod {m_i}\),而 \(x_i \equiv 0 \pmod {m_j} (i \neq j)\),那么最终方程组的答案就是 \(\sum_{i = 1}^{n} x_i\)

那么问题就换成了如何构造这样的一个解 \(x_i\)。要使得 \(x_i\)满足第二个条件,那么只需要 \(x_i\)里含有 \(M_i\)即可。
然后我们对 \(M_i\)求逆元 \(b_i\),也就是找到一个 \(b_i\)使其满足:

\[M_i b_i \equiv 1 \pmod {m_i} \]

由于 \(M_i\)\(m_i\)互质,所以逆元肯定存在。(这也是为什么中国剩余定理要求任意两个模数之间互质的原因)
之后我们两边乘以一个 \(a_i\),就会得到:

\[a_i M_i b_i \equiv a_i \pmod {m_i} \]

那么, \(x_i = a_i M_i b_i\)就是我们所需要构造的解了。

扩展中国剩余定理

当线性同余方程组中,存在两个模数不互质的时候,就要用到扩展中国剩余定理。
我们可以用数学归纳法来证明(理解/构造)扩展中国剩余定理。

首先,对于第一个方程,\(x_1 = a_1\)显然是第一个方程的解。

然后对于第\(k\)个方程,定义 \(m = {\rm{lcm}}\{m_1, m_2, \cdots, m_{k - 1}\}\), \(x_{k - 1}\)为前 \(k - 1\)个方程的解。那么对于\(x_{k - 1} + tm\)肯定也是前 \(k - 1\)个方程的解(\(tm\)会被模掉)。那么在求解第 \(k\)个方程的时候,我们只需要找到一个参数 \(t\)使得满足 \(x_{k - 1} + tm \equiv a_k \pmod {m_k}\)。那么

\[x_k = x_{k - 1} + tm \]

对于 \(x_{k - 1} + tm \equiv a_k \pmod {m_k}\),这显然就是一个线性同余方程,用exgcd即可求解。当这个线性同余方程无解的时候,整个方程组也无解。
也就是:

\[\gcd{\{m, m_k\}} \mid a_k - x_{k - 1} \]

时,同余方程有解。
整个过程就类似于两两个方程的解不断的合并,直到最后合并剩下最后一个解。

所以,当仅仅是判断方程组有没有解的情况,我们可以判断所有任意两个方程 \(i, j\),判断是否满足 \(\gcd{\{m_i, m_j\}} \mid a_i - a_j\)。不满足时,整个方程组无解。

posted @ 2020-01-01 09:40  ljxtt  阅读(517)  评论(0编辑  收藏  举报