中国剩余定理,又名孙子定理、中国余数定理,得名于中国古代数学家孙子在《孙子算经》中首次提到的一次同余方程组问题及其解法。原文如下:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?即,一个整数除以三余二,除以五余三,除以七余二,求这个整数。而那句为大家所熟知的《孙子歌诀》则是由明朝数学家程大位根据秦九韶解法编成的:
三人同行七十稀,五树梅花廿一支,七子团圆月正半,除百零五使得知。
歌诀的意思是:将这个数除以3得到的余数乘以70,除以5得到的余数乘以21,除以7得到的余数乘以15,全部加起来后除以105,得到的余数(23)就是答案。
定理:设是k个两两互素的正整数,,,则同余式组
有唯一解:,其中是满足条件的整数,即求的逆元。
例1:孙子算经中的原题
, 可得: ,.
这里互素,因此无需化简,已经满足应用中国剩余定理的条件。
同余方程组的模,
,由扩展欧几里得算法,得。
即“问物几何?”答案为23。
值得注意的是,应用中国剩余定理解一次同余式组是有前提条件的,即“是k个两两互素的正整数”成立,那对于不符合这一条件的一次同余式组,如何解决呢?
数学中最重要的核心思想之一就是化未知为已知,我们只要把不满足条件的同余式“处理”成符合条件的同余式,问题不就又转化为用中国剩余定理解同余式组了么?
这里引入几个定理:
1.设a,m为正整数,m>1,(a,m)=1,则同余式恰有唯一解:
2.设a,m为正整数,m>1,(a,m)=d,则同余式有解,当且仅当d|b时,解为,是 的唯一解。
3.同余的基本性质之一:如果,,, 则。
其中1,2给出了求的全部解的一般办法,3给出了“拆”不互素的的办法。
具体来说,再看一道例题:
例2:
,由定理2可知,有3个解,分别是,是的唯一解,由定理1可知,,故同余式解为 .
这是利用了定理1,2解决了x前面系数不为1的情况,不过这种情况在一次同余式组中并不常见。
更常见的是下面这种情况:x系数均为1,但是模数不互素,这需要我们熟练应用定理3的推论。
例3:
啧,这个同余式组的3个模数两两之间都不互素,该怎么转化呢?
我们先从两个不是完全平方数的数开始处理,因为它们看起来没有完全平方数那么“特殊”。那么, 就可以转化为 ,而 可以转化为 ,即,这样我们目前就把 转化成了 ,距离标准的、孙子定理能够解决的一次同余式组只有一步之遥了。
乍一看,你可能会说:啊哈! 可以拆成 ,也就是 ,这简直不要太简单哦...
且慢,这样处理真的没有问题吗?换句话说,满足 的 x 一定满足吗?举个简单的例子,x = 7 显然满足,但是 x = 7 并不是 的解。这样处理不是没有问题,而是出大问题!
啊哦,那咋办呢?
分析一下问题,我们这一步转化的目的无非就是在和 之中去掉一个。刚刚的经验告诉我们,这一步操作得依据集合论,即把条件比较强、解集比较小的那个等式留下。所以我们应该把 去掉,最终我们要解的一次同余式组就是 .
这时,我们终于可以运用中国剩余定理了,解得 ,感兴趣的读者可以验算一下。
由此,我们得到了一个很重要的结论:一次同余式组中出现模数为完全平方数的同余式的时候,这一同余式不能被“约去”!
一次同余式组问题作为数论的重要组成部分,是学习密码学必不可少的基础知识。实际上,解高次同余式组的基本思想也是将高次同余式的模数分解,将模数较大的同余式的求解问题转化为模数相对小的一组同余式的求解问题,然后利用中国剩余定理来求解。