中国剩余定理 (CRT)
玩一玩
找出所有
通过暴力枚举,我们可以得知答案:
简单形式
现在来考虑一个问题:
证明:一定存在一个
$a$ ,满足
$$a \equiv a_1\;(\text{mod}\;m) \\a \equiv a_2\;(\text{mod}\;n)$$ 其中
$m \bot n$
我们使用鸽巢原理来证明。
设有
即设其中有两个数模
那么意味着:
两式相减可得:
因为
但是
故之前选出的
那么这里面必定存在一个数模
中国剩余定理
证明:存在一个数
$x$ ,满足
$$x \equiv a_1 \; (\text{mod}\;m_1) \\x \equiv a_2 \; (\text{mod}\;m_2) \\\dots \\x \equiv a_k \; (\text{mod}\;m_k)$$ 其中
$m_1,\;m_2,\;\dots,\;m_k$ 两两互质
当然可以考虑两两合并的方式,并使用之前鸽巢原理的证法来证明。
当然我们考虑一种更具有价值的证法。
既然要证明其存在,不如直接构造一个答案:
首先设:
是所有模数之积。
是剔除掉某一个模数的积。
则是一个神奇的数字。
由于
那么:
接下来就是要证明这个数同时满足上面的方程。
首先注意到:
同时:
于是:
因此这个数是满足要求的。
同时我们获得了中国剩余定理 (CRT) 的公式:
借助欧几里德算法,可以在
应用
中国剩余定理一个最大的应用就是计算一些数在模一个合数下的取值。
例如,求大组合数取模:
对于这个问题,如果
然而现在是合数。
我们考虑一种方案,将合数
这样就变成了我们之前所讨论的问题。对于此,使用中国剩余定理,就可以合并答案。