今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?
上述问题便是一个具体线性同余方程组。所谓线性同余方程组,就是形如:
的方程组。
中国剩余定理
中国剩余定理是用于解决线性同余方程组的问题。
要使用中国剩余定理,必须得保证任意两个模数之间互质。
先说结论,上述方程的解为:
其中,(M_i = prod_{j = 1(i eq 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 eq j)),那么最终方程组的答案就是 (sum_{i = 1}^{n} x_i)。
那么问题就换成了如何构造这样的一个解 (x_i)。要使得 (x_i)满足第二个条件,那么只需要 (x_i)里含有 (M_i)即可。
然后我们对 (M_i)求逆元 (b_i),也就是找到一个 (b_i)使其满足:
由于 (M_i)与 (m_i)互质,所以逆元肯定存在。(这也是为什么中国剩余定理要求任意两个模数之间互质的原因)
之后我们两边乘以一个 (a_i),就会得到:
那么, (x_i = a_i M_i b_i)就是我们所需要构造的解了。
扩展中国剩余定理
当线性同余方程组中,存在两个模数不互质的时候,就要用到扩展中国剩余定理。
我们可以用数学归纳法来证明(理解/构造)扩展中国剩余定理。
首先,对于第一个方程,(x_1 = a_1)显然是第一个方程的解。
然后对于第(k)个方程,定义 (m = { m{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 - 1} + tm equiv a_k pmod {m_k}),这显然就是一个线性同余方程,用exgcd即可求解。当这个线性同余方程无解的时候,整个方程组也无解。
也就是:
时,同余方程有解。
整个过程就类似于两两个方程的解不断的合并,直到最后合并剩下最后一个解。
所以,当仅仅是判断方程组有没有解的情况,我们可以判断所有任意两个方程 (i, j),判断是否满足 (gcd{{m_i, m_j}} mid a_i - a_j)。不满足时,整个方程组无解。