中国剩余定理
古代数学的光辉业绩
——中国剩余定理
我国古代数学名著《孙子算经》载有一道数学问题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?”这里的几何指多少的意思。翻译成数学语言就是:求正整数N,使N除以3余2,除以5余3,除以7余2。
如何求符合上述条件的正整数N呢?《孙子算经》给出了一个非常有效的巧妙解法。术曰:“三、三数之剩二,置一百四十;五、五数之剩三,置六十三;七、七数之剩二,置三十,并之,得二百三十三。以二百一十减之,即得。凡三、三数之剩一,则置七十;五、五数之剩一,则置二十一;七、七数之剩一,则置十五。一百六以上,一百五减之,即得。”
过了一千多年,到了十六世纪,数学家程大位在他所著的《算法统宗》里把这个问题的解法用歌诀形式表述出来。三人同行七十稀, 五树梅花廿一枝,七子团圆正月半,除百零五便得之。
歌诀的前三句给出了三组数,后一句给出了一个数:
3 70
5 21
7 15
105
三组数的共同特征是:
70除以3余1,除以5、7余0; 21除以5余1,除以3、7余0; 15除以7余1,除以3、5余0。
首先程大位把不同的余数问题统一化为标准的余数问题。然后,他把复杂难解的问题化解为三个易解的问题。70、21、15分别是满足第一、二、三行条件的最小解。
2×70满足原题第一个余数条件,且被5、7整除。
3×21满足原题第二个余数条件,且被3、7整除。
2×15满足原题第三个余数条件,且被3、5整除。
统统相加得和:N=2×70+3×21+2×15=233。
N必然满足原题所有三个余数条件。但N不一定是最小的。歌诀最后一句“除百零五便得知”,这里“除”的意思是“减”,意即从233中减去3、5、7的最小公倍数105的倍数便得到23。这个23就是问题的最小解。这最后一句也可以理解为N除以105的余数就是问题的最小解。
中国古代数学有一个传统,总是以具体的数量关系表示一般的规律。把中国剩余定理译成数论术语就是:
设m1、m2、m3是两两互质的正整数,对任意给定的整数a1、a2、a3,必存在整数,满足
x≡a1 (mod m1), x≡a2 (mod m2), x≡a3 (mod m3)。
并且满足上列方程组的解x(mod m1m2m3)是存在唯一的。
上面定理的表述是为方便或为忠于《孙子算经》,我们只写出含三个余数的情形,其实,这个定理对n个余数是通用的。
这个算法,给出了这类问题的非常简捷的一般解法。这个算法,具有非凡的数学思想,并对数论、代数产生了重要影响,中国称此算法为“孙子定理”,国际上称此为“中国剩余定理”。这是中国数学对世界数学最重要的贡献之一。中国剩余定理除本身的重要性之外,它还提示人们,要解决较复杂的问题,最好把它分解为几个易解的子问题;把问题各不相同的条件化成标准的条件,然后用标准的、统一的方法去处理。这是两种重要的数学思想。
南宋数学家秦九韶在他的《数书九章》中推广了“物不知数”问题,提出了计算“乘率”的方法——“大衍求一术”,使解决一次同余式问题的方法形成系统化的数学理论。
在西方,直到十八世纪,瑞士的欧拉与法国的拉格朗日才对同余式问题进行系统的研究。十九世纪的第一年,德国的高斯在《算术探究》一书中,才提出解决这类问题的方法——剩余定理,并给出了严格证明,被后人称为“高斯定理”。1852年英国基督教士伟烈亚力在《字林西报》上发表了《中国科学的记述》,介绍《孙子算经》中的“物不知数”题,并第一次解释了“大衍求一术”,并指出它实质上和高斯定理是一致的。当时,德国著名数学家康托尔称赞秦九韶是“最幸运的天才”,秦九韶推广了“中国的剩余定理”,为我国和世界数学史增添了光彩。
中国剩余定理的补充资料
已知m1、m2、m3是两两互质的正整数,求最小正整数x,使它被m1、m2、m3除所得余数分别为C1、C2、C3 。
孙子定理的思想便是先分别找出被其中数mi除余1而被另二数整除的数Mi(i=1,2,3),则所求的数之一便是 C1M1+C2M2+C3M3;
若欲求的是最小的符合要求的数,则将上面的得数减去m1、m2、m3的整数倍(0,1,2,…)即可.
在古算题中,m1=3,m2=5,m3=7;C1=2,C2=3,C3=2;M1=70,M2=21,M3=15.
其中 : M1=70=3×23+1=5×7×2;
M2=21=5×4+1=3×7×1;
M3=15=7×2+1=3×5×1;
而 C1M1+C2M2+C3M3=2×70+3×21+2×15=233
∵233>2×3×5×7=2×105,故所求最小数为 233-2×105=23
孙子定理可以推广到对任意n个数mi的情形,n≥2,n∈N,国外称此定理为“中国剩余定理”。
民间传说着一则故事——“韩信点兵”。
秦朝末年,楚汉相争。一次,韩信将1500名将士与楚王大将李锋交战。苦战一场,楚军不敌,败退回营,汉军也死伤四五百人,于是韩信整顿兵马也返回大本营。当行至一山坡,忽有后军来报,说有楚军骑兵追来。只见远方尘土飞扬,杀声震天。汉军本来已十分疲惫,这时队伍大哗。韩信兵马到坡顶,见来敌不足五百骑,便急速点兵迎敌。他命令士兵3人一排,结果多出2名;接着命令士兵5人一排,结果多出3名;他又命令士兵7人一排,结果又多出2名。韩信马上向将士们宣布:我军有1073名勇士,敌人不足五百,我们居高临下,以众击寡,一定能打败敌人。汉军本来就信服自己的统帅,这一来更相信韩信是“神仙下凡”、“神机妙算”。于是士气大振。一时间旌旗摇动,鼓声喧天,汉军步步进逼,楚军乱作一团。交战不久,楚军大败而逃。
在一千多年前的《孙子算经》中,有这样一道算术题:
“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”按照今天的话来说:一个数除以3余2,除以5余3,除以7余2,求这个数.
这样的问题,也有人称为“韩信点兵”.它形成了一类问题,也就是初等数论中解同余式.这类问题的有解条件和解的方法被称为“中国剩余定理”,这是由中国人首先提出的.
① 有一个数,除以3余2,除以4余1,问这个数除以12余几?
解:除以3余2的数有: 2, 5, 8, 11,14, 17, 20, 23….
它们除以12的余数是: 2,5,8,11,2,5,8,11,….
除以4余1的数有: 1, 5, 9, 13, 17, 21, 25, 29,….
它们除以12的余数是: 1, 5, 9, 1, 5, 9,….
一个数除以12的余数是唯一的.上面两行余数中,只有5是共同的,因此这个数除以12的余数是5.
如果我们把①的问题改变一下,不求被12除的余数,而是求这个数.很明显,满足条件的数是很多的,它是 5+12×整数,
整数可以取0,1,2,…,无穷无尽.事实上,我们首先找出5后,注意到12是3与4的最小公倍数,再加上12的整数倍,就都是满足条件的数.这样就是把“除以3余2,除以4余1”两个条件合并成“除以12余5”一个条件.《孙子算经》提出的问题有三个条件,我们可以先把两个条件合并成一个.然后再与第三个条件合并,就可找到答案.
②一个数除以3余2,除以5余3,除以7余2,求符合条件的最小数.
解:先列出除以3余2的数: 2, 5, 8, 11, 14, 17, 20, 23, 26,…,
再列出除以5余3的数: 3, 8, 13, 18, 23, 28,….
这两列数中,首先出现的公共数是8.3与5的最小公倍数是15.两个条件合并成一个就是8+15×整数,列出这一串数是8, 23, 38,…,再列出除以7余2的数 2, 9, 16,23, 30,…,
就得出符合题目条件的最小数是23.
事实上,我们已把题目中三个条件合并成一个:被105除余23.
那么韩信点的兵在1000-1500之间,应该是105×10+23=1073人
定理得内容:若某数x分别被d1、d2、…、dn除得的余数为r1、r2、…、rn,则x可表示为下式:x=R1r1+R2r2+…+Rnrn+RD
其中R1是d2、d3、…、dn的公倍数;而且被d1除,余数为1;…、Rn是d1、d2、…、dn-1的公倍数;而且被dn除,余数为1;D是d1、d2、…、dn的最小公倍数;R是任意整数,可根据实际需要决定,且d1、d2、…、dn必须互质,以保证每个Ri(I=1,2,…,n)都能求得。
一、剩余问题
在整数除法里,一个数同时除以几个数,整数商后,均有剩余;已知各除数及其对应的余数,从而要求出适合条件的这个被除数的问题,叫做剩余问题。
二、两个定理
定理1:几个数相加,如果只有一个加数,不能被数a整除,而其他加数均能被数a整除,那么它们的和,就不能被数a整除。
如:10能被5整除,15能被5整除,但7不能被5整除,所以(10+15+7)不能被5整除。
定理2:二数不能整除,若被除数扩大(或缩小)了几倍,而除数不变,则其余数也同时扩大(或缩小)相同的倍数(余数必小于除数)。
如:22÷7=3……1
(22×4)÷7=12……1×4(=4)
(要余2即 22×2÷7=6……2)
(22×9)÷7=28……1×9-7(=2)
(想余5则22×5÷7=15……5)
三、读解《中国剩余定理》
中国数学史书上记载:在两千多年前的我国古代算书《孙子算经》中,有这样一个问题及其解法:
今有物不知其数,三三数之剩二;五五数之剩三:七七数之剩二。问物几何?
答曰:23
术曰:“三三数之剩二,置一百四十;五五数之剩三,置六十三;七七数之剩二,置三十。并之,得二百三十三,以二百一十减之即得。”
“术”即解法。书中还介绍了上述问题中余数为一的一般解法:凡三三数之剩一,则置七十;五五数之剩一,则置二十一;七七数之剩一则置十五;一百六以上,以一百零五减之即得。
在明朝程大位著《算术统宗》一书中,把上述问题的基本解法,用诗句概括为:
三人同行七十稀,五树梅花廿一枝,七子团圆正半月,除百令五便得知。
解法1:依定理译成算式解为:
70×2+21×3+15×2=233
233-105×2=23
这就是享誉中外的《中国剩余定理》。对此古代剩余问题,时至今日另有解法。
解法2:用各除数的“基础数”法解。
基础数的条件:
(1)此数必须符合除数自身的余数条件;
(2)此数必须是其他所有各除数的公倍数。
(一)求各除数的最小公倍数[3,5,7]=105
(二)求各除数的基础数
(1)[3] 105÷3=35 [35]÷3=11……2
(2)[5] 105
÷ 5=21 21÷5=4……1(当于3)
∵1×3=3 ∴ 21×3=[63]
(3)[7]
105 ÷ 7=15 15 ÷ 7=2……1(当于2)
∵1×2=2 ∴15×2=[30]
(三)求各基础数的和35+63+30=128
(四)求基准数(最小的,只有一个)128-105=23
(五)求适合条件的数X X=23+105K(K是整数)(注:此法易行,且具有一般性)
解法3:用枚举筛选法解
按除数3,7同余2,依次逐一枚举;随后用除以5余3,进行筛选,便可获解。
摘录条件
3......2
(基准数) ÷5……3 同余 2
7......2
(一)求3和7的最小公倍数
[3,7] =21
(二)进行枚举筛选
(1)21+2=23
23÷5=4……3
一般地有:X=基准数+各除数的最小公倍数×K(K是整数)
四、剩余问题的解法与应用
例:韩信点兵,有兵一队,若列成五行纵队,则末行一人;若列成六行纵队,则末行五人;若列成七行纵队,则末行四人;若列成十一行纵队,则末行十人,求兵数至少有多少人?
用基础数法解:
5......l
基准数(2111)÷6……5
7......4
11......10
(一)求各除数的最小公倍数
[5, 6, 7, 11]=2310
(二)求各除数的基础数
(l)[5]
2310÷5=462
462÷5=92……2
∵2×3-5=1
∴462×3=[1386]
(2)[6]
2310÷6=385
385÷6=64……1
∵ 1×5=5
∴385×5=[1925]
(3)[7] 2310÷7=330
330÷7=47……1
∵1×4=4
∴330×4=[1320]
(4)[11]
2310÷11=210
210÷11=19……1
∵1×10=10
∴210×10=[2100]
(三)求各基础数的和
1386+1925+1320+2100=6731
(四)求最小的基准数
6731-2310×2=2111(人)
(五)求最适合条件的数X
X=2111+2310K(K为整数)
答:这队兵至少有2111人。
注:各除数应两两互质,可确保命题的真实性。
五、推导《3、5、8剩余定理)及启用
题目:一个数除以3余2;除以5余3;除以8则余1。此数最小是多少?
摘录条件 3……2
(基准数)(113)÷5……3
8......1
A、推导定理:只要能确定3、5、8各除数的余数均为1的基础数,便可推导出定理,随后再乘以各对应的余数,即可依此定理解题。
(一)[3、5、8]=120
(二)求各除数的余数均为1的基础数
(1)[3]120÷3=40
[40]÷3=13……1
(2)[5]120÷5=24
24÷5=4……4
∵4×4-5×3=l
∴24×4=[96]
(3)[8]120÷8=15
15÷8=1……7
∵7×7-8×6=1
∴15×7=[105]
由此得出《3、5、8剩余定理》诗曰:
三人同行40多,五树梅花96朵,
八仙过海105招,除百二十便解惑。
(三)分别乘以各对应的余数再求和而获解
40×2+96×3+105×l=473
(四)求最小的基准数
473-120×3=113
B、启用定理,再解两题
(一) 3……1
(79)÷5……4
8......7
解:40×1+96×4+105×7=1159
1159-120×9=79
(二) 3……2
(11)÷5……1
8......3
解:40×2+96×1+105×3=491
491-120×4=11
C、补充《3、4、5剩余定理》
三人同行40里,四季花开45枝,
五朵金花36浪,除去六十便得知。
3......2
(53)÷4……1
5......3
解:40×2+45×1+36×3=233
233-60×3=53
由此可知,“剩余问题”的“解法定理”,都是可以推得的,都是非常灵验的。
通过对“剩余问题”的研讨,使我们进一步认识了其“解法定理”,提高了解题能力,证明其解题方法可行、实用、有趣和灵活多样。《3、5、8剩余定理》、《3、4、5剩余定理》……《a、b、c剩余定理》等“解法定理”的推导成功,证明对“剩余问题”完全可以运用“定理解题”。
读解《中国剩余定理》
中国数学史书上记载:在两千多年前的我国古代算书《孙子算经》中,有这样一个问题及其解法:
今有物不知其数,三三数之剩二;五五数之剩三:七七数之剩二。问物几何?
答曰:23
《孙子算经》中给出这类问题的解法:“三三数之剩二,则置一百四十;五五数之剩三,置六十三;七七数之剩二,置三十;并之得二百三十三,以二百一十减之,即得。凡三三数之剩一,则置七十;五五数之剩一,则置二十一;七七数之剩一,则置十五,一百六以上,以一百五减之,即得。”用现代语言说明这个解法就是:
首先找出能被5与7整除而被3除余1的数70,被3与7整除而被5除余1的数21,被3与5整除而被7除余1的数15。
所求数被3除余2,则取数70×2=140,140是被5与7整除而被3除余2的数。
所求数被5除余3,则取数21×3=63,63是被3与7整除而被5除余3的数。
所求数被7除余2,则取数15×2=30,30是被3与5整除而被7除余2的数。
又,140+63+30=233,由于63与30都能被3整除,故233与140这两数被3除的余数相同,都是余2,同理233与63这两数被5除的余数相同,都是3,233与30被7除的余数相同,都是2。所以233是满足题目要求的一个数。
而3、5、7的最小公倍数是105,故233加减105的整数倍后被3、5、7除的余数不会变,从而所得的数都能满足题目的要求。由于所求仅是一小队士兵的人数,这意味着人数不超过100,所以用233减去105的2倍得23即是所求。
“中国剩余定理”算理及其应用
70是5和7的公倍数,且除以3余1。21是3和7的公倍数,且除以5余1。15是3和5的公倍数,且除以7余1。(任何一个一次同余式组,只要根据这个规律求出那几个关键数字,那么这个一次同余式组就不难解出了。)把70、21、15这三个数分别乘以它们的余数,再把三个积加起来是233,符合题意,但不是最小,而105又是3、5、7的最小公倍数,去掉105的倍数,剩下的差就是最小的一个答案。
用歌诀解题容易记忆,但有它的局限性,只能限于用3、5、7三个数去除,用其它的数去除就不行了。后来我国数学家又研究了这个问题,运用了像上面分析的方法那样进行解答。
例1:一个数被3除余1,被4除余2,被5除余4,这个数最小是几? 题中3、4、5三个数两两互质。
则〔4,5〕=20;〔3,5〕=15;〔3,4〕=12;〔3,4,5〕=60。
为了使20被3除余1,用20×2=40;
使15被4除余1,用15×3=45;
使12被5除余1,用12×3=36。
然后,40×1+45×2+36×4=274,
因为,274>60,所以,274-60×4=34,就是所求的数。
例2:一个数被3除余2,被7除余4,被8除余5,这个数最小是几? 题中3、7、8三个数两两互质。
则〔7,8〕=56;〔3,8〕=24;〔3,7〕=21;〔3,7,8〕=168。
为了使56被3除余1,用56×2=112;
使24被7除余1,用24×5=120。
使21被8除余1,用21×5=105;
然后,112×2+120×4+105×5=1229,
因为,1229>168,所以,1229-168×7=53,就是所求的数。
例3:一个数除以5余4,除以8余3,除以11余2,求满足条件的最小的自然数。 题中5、8、11三个数两两互质。
则〔8,11〕=88;〔5,11〕=55;〔5,8〕=40;〔5,8,11〕=440。
为了使88被5除余1,用88×2=176;
使55被8除余1,用55×7=385;
使40被11除余1,用40×8=320。
然后,176×4+385×3+320×2=2499,
因为,2499>440,所以,2499-440×5=299,就是所求的数。
例4:有一个年级的同学,每9人一排多5人,每7人一排多1人,每5人一排多2人,问这个年级至少有多少人 ?(幸福123老师问的题目) 题中9、7、5三个数两两互质。
则〔7,5〕=35;〔9,5〕=45;〔9,7〕=63;〔9,7,5〕=315。
为了使35被9除余1,用35×8=280;
使45被7除余1,用45×5=225;
使63被5除余1,用63×2=126。
然后,280×5+225×1+126×2=1877,
因为,1877>315,所以,1877-315×5=302,就是所求的数。
例5:有一个年级的同学,每9人一排多6人,每7人一排多2人,每5人一排多3人,问这个年级至少有多少人 ?(泽林老师的题目)
题中9、7、5三个数两两互质。
则〔7,5〕=35;〔9,5〕=45;〔9,7〕=63;〔9,7,5〕=315。
为了使35被9除余1,用35×8=280;
使45被7除余1,用45×5=225;
使63被5除余1,用63×2=126。
然后,280×6+225×2+126×3=2508,
因为,2508>315,所以,2508-315×7=303,就是所求的数。
(例5与例4的除数相同,那么各个余数要乘的“数”也分别相同,所不同的就是最后两步。)
关于“中国剩余定理”类型题目的另外解法
“中国剩余定理”解的题目其实就是“余数问题”,这种题目,也可以用倍数和余数的方法解决。 如:
例一,一个数被5除余2,被6除少2,被7除少3,这个数最小是多少?
解法:题目可以看成,被5除余2,被6除余4,被7除余4 。看到那个“被6除余4,被7除余4”了么,有同余数的话,只要求出6和7的最小公倍数,再加上4,就是满足后面条件的数了,6X7+4=46。下面一步试下46能不能满足第一个条件“一个数被5除余2”。不行的话,只要再46加上6和7的最小公倍数42,一直加到能满足“一个数被5除余2”。这步的原因是,42是6和7的最小公倍数,再怎么加都会满足
“被6除余4,被7除余4”的条件。
46+42=88 46+42+42=130 46+42+42+42=172
这是一种形式的,它的前提是条件中出现同余数的情况,如果遇到没有的,下面讲
例二,一个班学生分组做游戏,如果每组三人就多两人,每组五人就多三人,每组七人就多四人,问这个班有多少学生?
解法:题目可以看成,除3余2,除5余3,除7余4。没有同余的情况,用的方法是“逐步约束法”,就是从“除7余4的数”中找出符合“除5余3的数”,就是在4上一直加7,直到所得的数除5余3。得出数为18,下面只要在18上一直加7和5得最小公倍数35,直到满足“除3余2”
4+7=11 11+7=18 18+35=53
这种方法也可以解“中国剩余定理”解的题目。比“中国剩余定理”更好理解,我觉的速度上会比那个繁琐的公式化的解题更快。
【附录】
一、【《孙子算经》简介】
《孙子算经》算经十书之一,是公元四世纪左右的数学著作,编撰年代不详。作者孙子,公元四世纪时人,生平不详。现传本分上、中、下三卷。上卷叙述度量衡制度、筹算记数和筹算乘除算法;中卷举例说明筹算分数算法、开平方和面积、体积计算;下卷是各种应用问题。中、下两卷共有各类算题64题。
《孙子算经》中“物不知数”问题及解法,属于一次同余式组,数论中称为“中国剩余定理”,也称“孙子定理”,秦九韶在此基础上,进一步研究,提出了“大衍求一术”。经我国历代数学家研究发展成完整严谨的理论与方法。
《孙子算经》是古代较为普及的算书。其中算题写得浅近有趣。例如“鸡兔同笼”(雉兔同笼)题远传日本(日本称为“鹤龟算”)。
“雉兔同笼”题为:“今有雉兔同笼,上有三十五头,下有九十四足。问雉兔各几何?”
二、【程大位简介】
程大位(1533年~1606年)字汝思,号宾渠。安徽休宁县率口(今为安徽省屯溪市前园村,其地土名渠沿)人,出身小商。据记载,程大位幼年聪敏好学,尤其喜爱数学,常“不惜重资,以购求遗书”,“遇方田、米粟、差分、少广、商功、均输、盈不足、方程、勾股诣书,辄厚资购得之。”二十岁左右,他利用外出经商的机会,“遨游吴楚,博访闻人志士”,接触了许多实际问题,深感学习数学之重要。程大位早年就外出经商,分析毫末,较量锱铢,持筹握算;加之好学不倦,因而从中养成了认真、细致、精核、严谨的精神。他不仅深入实际,搜集问题,而且帮助群众解决问题。
程大位谦虚好学,治学严谨。他利用“商游吴楚”的机会,遇有“睿通数学者,辄造请问难,孜孜不倦”。在他所著的《算法统宗》中,就刻有“师生问难图”,一个青年手持算盘,向老者请教,态度至诚。程大位四十岁后,倦于外游,便“归而覃思于率水之上余二十年”。认真钻研古籍资料,绎其文义,审其成法,遍取各家之长,加上自己的心得体会,程大位花了毕生精力,终于于明万历壬辰(1592年)写成巨著《直指算法统宗》一书,共十七卷。书中列举算题五百九十五个,都附有详细解法。其后六年,又对该书“删其繁芜,揭其要领”,写成《算法纂要》四卷,先后在当时的休宁县屯溪发行。
《算法统宗》是一本良好的教科书,它结构严谨,循序渐进,文字通俗,明白易懂,由浅入深,饶有风趣。《算法统宗》很注意形数结合,利用图形的变换来论证算法的依据,即所谓“演段根源图”。《算法统宗》中集录了许多“难题”,这些题目均以诗歌形式出现。如:当年苏武去北边 不知去了几周年 分明记得天边月 二百三十五番圆。再如:今携一壶酒 游春郊外走 逢朋添一倍 入店饮九斗 相逢三处店 饮尽壶中酒 试问能算士 如何知原有。
这一类题目,富有民族特色,能激发学习兴趣,开发智力,培养爱国主义思想感情,即使在今天也还值得推荐。
《算法统宗》集珠算之大成,在我国数学史上有重要地位。
在中国数学研究的低潮时期,一个小商人,能不惜资金购买算书,“殚思竭虑,精研其术”,终于克通其奥,写出引人注目的巨著,自己出资,锓锌以传,且不断增删,多次发行。这种精神,实为难能可贵。正因为如此,程大位被人推崇,赠给“隶首薪传”(隶首,传说为黄帝时人,始定算数。薪传,薪尽火传,比喻道术学业之师矛相传。语出《庄子》。)匾额,高悬大厅数百年。