数学文化(六)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(六)
第三节 韩信点兵与中国剩余定理
一、“韩信点兵”的故事和《孙子算经》中的题目
1.“韩信点兵”的故事
这故事是说,韩信阅兵时,让一队士兵5人一行排队从他面前走过,他记下最后一行士兵的人数于(1人);再让这队士兵6人一行排队从他面前走过,他记下最后一行士兵的人数(5人);再让这队士兵7人一行排队从他面前走过,他记下最后一行士兵的人数(4人),再让这队士兵11人一行排队从他面前走过,他记下最后一行士兵的人数(10人)。
然后韩信就凭这些数,可以求得这队士兵的总人数。
这里面有什么秘密呢?
2.《孙子算经》中的题目
我国古代数学名著《孙子算经》中,有“物不知数”的题目:今有物不知其数,三三数之剩2,五五数之剩3,七七数之剩2,问物几何?
答曰 二十三。
《孙子算经》是我国最古老的三大数学名著之一。
这三大名著是《周髀算经》、《九章算术》、《孙子算经》。
特别是“物不知数”一题,是世界上公认的最古老的数学工作之一。
答案是23,那么,这个23是如何求得的呢?
二.问题的解答
1.从另一个问题入手
1)问题:今有物不知其数,二二数之剩1,三三数之剩2,四四数之剩3,五五数之剩4,六六数之剩5,七七数之剩6,八八数之剩7,九九数之剩8,问物几何?
2)筛法
① 简化 我们先简化题目,只提“前两个”要求:用2除余1,用3除余2,求这样的数,一种最普通的办法就是;先把“用2除余1”的数全列出来:
1,3,5,7,9,11,13,15,17,19,21,23,25,…
再从中筛选,挑出其中“用3除余2”的数来:
5,11,17,23,…
② 原题 这就启发我们想到,要解原问题,只要从上边筛选下的数中,继续挑出“用4除余3”的数:
11,23,…
再挑“用5除余4”的数,…一直筛选下去,舍得下功夫,就一定可得结果,并且看起来,解,还不是唯一的,可能有无穷多个解。
化繁为简的思想。
一个复杂的问题,如果在简化时仍然保留了原来问题的特点和本质,那么简化就“不失一般性”。
学会“简化问题”与学会“推广问题”一样,是一种重要的数学能力。
3)公倍数法 ① 简化
我们还是先看只有前两个条件的简化题目。
上述筛选过程的第一步,得到
1,3,5,7,9,11,13,15,17,19,21,23,25,… 其实是列出了“用2除余1”的数组成的数列。
这个数列实际上是用带余除法的式子得到的。
所谓“带余除法”,是指整数的如下“除法”:
∀ 被除数
a ,除数0
b ≠,必唯一存在商q 和余r ,使
,
0a bq r r b =+≤< 。
当余0r =时,则a bq =,称为“a b 被整除”
,或“b 整除a ”,是通常除法“a q b
=”的另一种表达形式。
所以,带余除法是通常除法的推广。
回到求“用2除余1的数”的问题。
设这样的数为x ,则121x n =+。
这里x 是被除数,2是除数,?1x 是商,1是余,且012≤< 。
121(012),x n =+≤<这就是
“带余除法”的式子。
当取10,1,2,3,4,n =L 时,
用上式求得的x 正好组成上述数列
1,3,5,7,9,11,13,15,17,19,21,23,25,… 。
现在,接着从中筛选出“用3除余2”的数,就是挑出符合下面“带余除法”表达式
232,(023)x n =+≤<
的数,这里2n 可取0,1,2,3,4,…。
如果我们不分上述两步,而是一上来就综合考虑两者,就是要解联立方程组
1121
.32x n x x n =+⎧⎨
=+⎩
中的 那么,除了刚才的筛法外,还有没有巧妙的解法?我们考察上边两个方程的特点,发现,两个“带余除法”的式子,都是“余数比除数少1”。
于是想到,如果把被除数再加1,不是余数就为0了吗?换句话说,不是就出现整除的情况了吗?
于是把上边每个方程两边都加上1,成为
1212(1)
13(1)x n x n +=+⎧⎨
+=+⎩
这说明,1x +既是2的倍数,又是3的倍数,因此,它是2与3的公倍数。
如果用[2,3]表示2和3的最小公倍数,那么,因为公倍数都是最小公倍数的倍数,就有:
g L
1[2,3],1,2,3,4,
+==
x k k
注意到[2,3]=6,所以“只有前两个条件的简化题目”的解为 ? 即 61,1,2,3,4,
=−=L 有无穷多个解,
x k k
即 5,11,17,23,
x=L 与前一解法结果相同。
② 原题
设原问题中,需要求的数是x,则x被2,3,4,5,6,7,8,9去除,所得的余数都是比除数少1,于是我们把被除数x再加1,则x+1就可被2,3,4,5,6,7,8,9均整除。
也就是说,x+1是2,3,4,5,6,7,8,9的公倍数,从而是其最小公倍数[2,3,4,5,6,7,8,9]的倍数。
g L
∴+===
x k k k
1.[2,3,4,5,6,7,8,9]2520,1,2,3,
即 25201,1,2,3,
=−=L
x k k
这就是原问题的全部解,有无穷多个解,其中第一个解是2519;我们只取正数解,因为“物体的个数”总是正整数。
4)推广
这一问题的推广,留作思考题。
[思]:① 求“用2除余1,用3除余2,… 用m除余m- 1”的数。
② 求“用a除余a -1,用b除余b-1,用c除余c-1”
的数(a,b,c 是任意大于1的自然数)
③ 求“用2,3,4,5,6,7,8,9除 都余1”的数。
④ 求“用5,7,9,11 除都余2”的数。
2.《孙子算经》中“有物不知其数”问题的解答 1)筛法.
首先写出“用3除余2”的数:2,5,8,11,14,17,20,23,26,29,…
其中,“用5除余3”的数:8,23,… 其中,“用7除余2”的数:23,… 由此得到,23是最小的一个解。
至于下一个解是什么,要把“…”写出来才知道,实践以后发现,是要费一点儿功夫的。
2)公倍数法
现在仿照上边用过的“公倍数法”
设,要求的数为x ,则依题意,得联立方程组
12332
53(*)72
x n x n x n =+⎧⎪
=+⎨⎪=+⎩
按上一问题中“公倍数法”解决问题的思路:给x 加上或减去一
个什么样的数,就能使三个等式的右边分别是3,5,7的倍数,从而等式左边就是3,5,7的公倍数了。
这要通过反复的试算,我们介绍一种试算的方法。
从第三个等式入手,两边加5(或减2)则得3357(1)(27)x n x n +=+−=或 则右边是7的倍数了,但两边加5(或减2)并不能使前两式的右边分别是3的倍数和5的倍数,所以两边加5(或减2)并不能成为3,5,7的公倍数。
再继续从第三个等式入手,为使第三个等式右边自然保持是7的倍数,可再加7l (或再减7h ),则得3577(1)x l n l ++=++(或3277()x h n h −−=−)将1,2,3(1,2,3)l h ==L
L 或代入试算、分析,最后发
现,为达到目的(三个等式的右边分别是3,5,7的倍数),最小的加数是82(11l =时5782l +=)
(或最小的减数是23,即3h =时2723h +=)
用等式两边加82来求解,有
123823(28)
825(17)82[3,5,7]105827(12)
10582,1,2,3,x n x n x k k x n x k k +=+⎧⎪
+=+∴+=⋅=⋅⎨⎪+=+∴=−=⎩
L
用等式两边减23来求解,有
123233(7)
235(4)23[3,5,7]105
237(3)
10523,1,2,3,x n x n x k k x n x k k −=−⎧⎪
′′−=−∴−==⋅⎨⎪′′−=−∴=+=⎩
L
多了一个k ′=0,因这时x 也是正数,合要求。
这两组解是一样的,都是23,23+105,23+2×105,……。
原因是82+23=105,故令1k k ′=+第一组解就成为
105(1)821051058210523x k k k ′′′=+−=+−=+便转化成第二组解。
但是,这82和23来之不易,并且如果题目中的余数变了,就得重新计算,所以这方法缺少一般性,为使它具有一般性,要做根本的修改。
3)单因子构件凑成法
我们先对上页(*)式作两个方面的简化:一方面是把余数都简化为最简单的1;另一方面是每次只考虑“一个除式”有余数的情况(即另两个除式都是整除的情况)这样得到三组方程
11
1
2
22
33331335(1);51(2);5(3)7771
x n y n z n x n y n z n x n
y n
z n =+==⎧⎧⎧⎪
⎪
⎪
==+=⎨⎨⎨⎪⎪⎪===+⎩
⎩
⎩
(1)式意味着,在5和7的公倍数中(35,70,105,…)寻找用3除余1的数;
(2)式意味着,在3和7的公倍数中(21,42,63,…)寻找用5除余1的数;
(3)式意味着,在3和5的公倍数中(15,30,45,…)寻找用7除余1的数;
对(1)式而言,这个数可以取70,对(2)式而言,这个数可
以取21,对(3)式而言,这个数可以取15。
于是(1)式两边同减70变为这样:第二式右边仍是5的倍数,第三式右边仍是7的倍数,而第一式右边由减的70是“用3除余1”的数,正好原来也多一个1,减没了。
∴第一式右边也成为了倍数。
1012113703(23)70[3,5,7]105
705(14)10570,0,1,2,707(10)
x n x k k x n x k k x n −=−∴−==⋅⎧⎪
−=−∴=+=⎨⎪−=−⎩
L
(2)式两边同减21
变为1222223213(7)
21[3,5,7]105
215(4)
10521,0,1,2,217(3)
y n y k k y n y k k y n −=−∴−==⋅⎧⎪−=−∴=+=⎨⎪−=−⎩
L
(3)式两边同减15
变为1332322153(5)
15[3,5,7]105
155(3)
10515,0,1,2,157(2)
z n z k k z n z k k z n −=−∴−==⋅⎧⎪−=−∴=+=⎨⎪−=−⎩
L
现在重复一下:所得x 是用3除余1,用5和7除余0的数;y 是用5除余1,用3和7除余0的数;z 是用7除余1,用3和5除余0的数。
那么,凑出232s x y z =++不就是我们要求的数吗?
因为,用3去除s 时,除y 及除z 均余0 ⇒ 除3y 及除2z 均余0, 又除x 余1 ⇒ 除2x 余2,
∴用
3除s 时余2。
用5去除s 时,除x 及除z 均余0 ⇒ 除2x 及除2z 均余0,
又除y 余1 ⇒ 除3y 余3, ∴用5除s 时余3。
用7去除s 时,除x 及除y 均余0 ⇒ 除2x 及除3y 均余0, 又除z 余1 ⇒ 除2z 余2, ∴用7除s 时余2。
于是我们要求的数是
1231232322(10570)3(10521)2(10515)(702213152)105(232)7022131521052,1,0,1,2,3,s x y z
k k k k k k k
k =++=+++++=×+×+×+++=×+×+×+=−−L
这就是《孙子算经》中“物不知其数”一题的解,有无穷多个,最小的正数是23(2k =−时)。
这里,(1),(2),(3)三式分别叫三个“单子因构件”,分别解
得10570
1052110515
x k y k z k =+=+=+,每个单因子构件,都是用某一个数去除余1,用另两个
数去除均余0的情况。
再据题目要求余数分别是2,3,2的情况,凑成
232s x y z =++
所以,上述方法叫“单因子构件凑成法”——解决“由几个平行条件表述的问题”
这种方法的最大优点是,可以任意改变余数,加以推广: 题:有物不知其数,三三数之剩a ,五五数之剩b ,七七数之剩
c ,问物几何?
答:解为702115105s a b c k =+++,(,k k ∈Z 的选取应使0s >) 4)歌诀
明朝数学家程大位在《算法统宗》中把上式总结为一首通俗易懂的歌决:
三人同行七十稀,五树梅花廿一枝, 七子团圆正半月,除百零五便得知。
其中正半月是指15,这个口诀把3,5,7;70,21,15及105这几个关键的数都总结在内了。
详细说,歌诀的含义是:3除的余数乘70,5除的余树乘21,7除的余数乘15,相加后再减去(“除”当“减”讲)105的适当倍数,就是要求的(最小)解了。
当然,解,不是唯一的,每差105,都是另一个解答,但如果结合实际问题,答案往往就是唯一的了。
例如一队士兵的大约人数,韩信应是知道的。
三、中国剩余定理
1247年南宋的数学家秦九韶把《孙子算经》中“物不知其数”一题的方法推广到一般的情况,得到称之为“大衍求一术”的方法,在《数书九章》中发表。
这个结论在欧洲要到十八世纪才由数学家高斯和欧拉发现。
所以世界公认这个定理是中国人最早发现的,特别称之为“中国剩余定理”(Chinese remainder theorem)。
该定理用现在的语言表达如下: 设12,,,n d d d L
两两互素,某整数x 分别被12,,,n d d d L 除所得的余数为
12,,,n r r r L ,则x 可表示为下式
1122n n x kD k r k r k r =++++g g L g
其中D 是12,,,n d d d L 的最小公倍数;i k 是111,,,,,i i n d d d d −+L L 的公倍数,
而且被i d 除所得余数为1;k 是任意整数。
要注意的是,应用上述定理时,12,,,n d d d L
必须两两互素。
前面的
问题中,3,5,7是两两互素的,所以“三三数,五五数,七七数”得余数后可用此公式。
但“四四数,六六数,九九数”得余数后就不能用此公式,因为4、6、9并不是两两互素的。
“中国剩余定理”不仅有光辉的历史意义,直到现在还是一个非常重要的定理。
1970年,年轻的苏联数学家尤里(28岁)解决了希尔伯特提出的23个问题中的第10个问题,轰动了世界数学界。
他在解决这个问题时,用到的知识十分广泛,而在一个关键的地方,就用到了我们的祖先一千多年前发现的这个“中国剩余定理”。
四、有趣的应用
某单位有100把锁,分别编号为1,2,3,…,100。
现在要对钥匙编号,使外单位的人看不懂,而本单位的人一看见锁的号码就知道该用哪一把钥匙。
能采用的方法很多,其中一种就是利用中国剩余定理,把锁的号码被3,5,7去除所得的三个余数来作钥匙的号码(首位余数是0时,也不能省略)。
这样,每把钥匙都有一个三位数编号。
例如23号锁的钥匙是232号,52号锁的钥匙是123号。
8号锁——231 19号锁——145
45号锁——003 52号锁——123
因为只有100把锁,不超过105,所以锁的号与钥匙的号是一一对应的。
如果希望保密性再强一点儿,则可以把刚才所说的钥匙编号加上一个固定的常数作为新的钥匙编号系统。
甚至可以每过一个月更换一次这个常数。
这样,仍不破坏锁的号与钥匙的号之间的一一对应,而外人则更难知道了。
[思]:① 求“用2除余1,用3除余2,… 用m除余m- 1”的数。
答:[2,3,,]1,1,2,3,
L L
x k m k
=⋅−=
② 求“用a除余a -1,用b除余b-1,用c除余c-1”的数(a,b,c是任意大于1的自然数)
答:[,,]1,1,2,3,
=⋅−=L
x k a b c k
③ 求“用2,3,4,5,6,7,8,9除 都余1”的数。
答:1[2,3,4,5,6,7,8,9],[2,3,,9]1,0,1,2,3,
L L x k x k k
−=⋅∴=⋅+=
④ 求“用5,7,9,11 除都余2”的数。
答:2[5,7,9,11],[5,7,9,11]2,0,1,2,3,
−=⋅∴=⋅+=L
x k x k k
象棋残局中的数学文化。