本文探讨的内容不仅仅是一道小学生的数学题,而且与国家公务员考试(简称“国考”)的试题有关。
问题的提出
我有一个与侄孙女同龄的亲戚,去年上小学四年级的时候曾经问过我一道老师布置的数学作业题:
“一些苹果,每5个一堆去数剩1个,每6个一堆去数剩2个,每7个一堆去数剩3个,请问至少有多少苹果?”
如果把这道题用数学语言“翻译”出来,就是:
“一个数被5除余1,被6除余2,被7除余3,这个数最小是多少?”
再来看看2006年国考的一道真题:
“一个三位数除以9余7,除以5余2,除以4余3,这样的三位数共有( ) 。
A. 5个 B. 6个 C. 7个 D. 8个 ”
不难看出,这两道题本质上是差不多的,此类问题在《数论》里称为余数问题。
问题的背景
余数问题的背景要追溯到一千五百多年以前。
那时候中国民间经常玩一种叫做“隔墙听”的游戏,也就是两个人站在墙的两边,其中一人出题让另一个猜:“今有物不知其数,三三数之余二,五五数之余三,七七数之余二,问今有物几?”把它翻译成现代汉语也就是:求一个数,使这个数用3除的余数是2,用5除的余数是3,用7除的余数是2,这个数最小是多少?。聪明人用心算几次就可以知道这个数是23。
中国古代的数学家经过潜心研究,给出了这个问题的一般解法。后来明朝一个叫程大位的人把这个一般解法概括为一首歌谣:“三人同行七十稀,五树梅花廿一枝,七子团圆正半月,除百零五便得知。” 其意思是:用3除得的余数乘以70、用5除得的余数乘以21、用7除得的余数乘以15,再把这三个数相加,若超过105,则一直减去105,直到剩下最小的正整数。
于是上面的例子用此法就可以这样计算:
2*70 + 3*21 + 2*15 = 233
然后再减去两个105,便得答案23。
一直到十八世纪,伟大的德国数学家高斯在研究数论的时候提出了同余式的概念,推广了中国古代的这个算法,并将其命名为“中国余数定理”。由于这个算法最早见于《孙子算经》,所以也被称为“孙子定理”。
问题的求解
对没有学习过余数定理的人(包括我自己),此类问题更一般情况(任意三个互质的数作除数、且余数也各有不同)的求解方法也可以用通俗的语言作如下的讨论。不过在讨论之前要先温习一下整数除法的一个重要性质:
“在整数除法中,若被除数扩大若干倍,则余数也随之扩大相同的倍数。”
例如: 5除以4,余数是1
10除以4,余数是2 (被除数5和余数1都扩大2倍)
15除以4,余数是3 (扩大3倍)
20除以4,余数是0 (扩大4倍后余数4又可被4整除,故应视余数为0)
25除以4,余数是1 (扩大5倍后余数5再除去一个4 ,故应视余数为1)
…………
好了,现在可以书归正传了。
如果在余数问题中,除数是任意三个两两互质的数,而且余数也各有不同,则解题的思路是“分进合击、各个击破”,而解题的关键则是分别找出三个除数对应的“基数”。这里所谓某个除数对应的“基数”,是指能同时被其余两个除数整除、且被第三个除数(自身)除后的余数与原题的余数相同的数中最小的那一个。举例说明如下:
例. 求“被3除余1、被4除余2、被5除余 4”的最小的自然数。
1. 找出每一个除数对应的“基数”。
为了计算方便,可以先把题目所给的条件列一个表
3……1
4……2
5……4
左边的3、4、5是除数,右边的1、2、4是对应的余数;
(1)除数3对应的“基数” 应该满足两个条件,一是可以同时被另两个除数4、5整除,而且被3(自身)除的余数是1。
先求出4、5的最小公倍数4*5 = 20,显然20可以同时被4、5整除(废话!),然后用20除以3,结果发现余数是2而不是1 !这时,为了保证既能同时被4、5整除、又能使余数是1,只要把20扩大一倍(20*2 = 40),则余数2也随之扩大一倍变成了4,再除去一个3,所以余数还应该看作是1。这时,“基数”的两个要求都得到了满足,也就是说,除数3对应的“基数”是40;
上述过程还可以简化为以下步骤:
求出4、5的最小公倍数 4*5 = 20;
观察求出的20除以3的余数是不是1:如果是,则20即为所求;如果不是,则将20依次乘以2、3……,直到余数是1为止。
如果从余数的角度看,显然3对应的“基数”40除以3、4、5的余数分别为1、0、0;
(2)除数4对应的“基数” :
3*5= 15 (另两个除数3、5的最小公倍数)
15除以4,余3 (与原题条件“余2“不符,需要继续扩大)
30除以4,余2 (扩大一倍后余数变成6,除去一个4,所以是余2)
从而4对应的“基数”是15*2 = 30;
而且4对应的“基数”30除以3、4、5的余数分别为0、2、0;
(3)除数5对应的“基数”:
3*4= 12 (另两个除数3、4的最小公倍数)
12除以5,余2 (与原题条件“余4“不符,需要继续扩大)
此时,只要扩大一倍,余数就可以变成4,故5对应的“基数”是12*2 = 24,它除以3、4、5的余数分别为0、0、4 ;
2. 将以上求出的三个“基数”相加:
40 + 30 + 24 = 94
这里的和“94”就是所有能“被3除余1、被4除余2、被5除余4”的自然数中的一个。
这其中的原理是利用了“和的整除性” :两个数相加,如果每一个数都能被某数整除,则它们的和也能被该数整除;如果每一个数除以某数都有余数,则它们的和除以该数所得的余数是各自余数的和。
举例来说,因为
数10:“被3除余1、被4除余2”
数21:“被3除余0、被4除余1”
所以它们的和 10+21 = 31 除以3的余数是原先各自余数的和 1+0 = 1 ;除以4的余数是2+1 =3 。
回看求三个“基数”的过程,由于
3对应的“基数”40除以3、4、5的余数分别为1、0、0
4对应的“基数”30除以3、4、5的余数分别为0、2、0
5对应的“基数”24除以3、4、5的余数分别为0、0、4
所以三个“基数”的和94除以3、4、5的余数应该为1、2、4,与题目的要求完全相符。
3. 能“被3除余1、被4除余2、被5除余4”的自然数很多,而94并不能保证是最小的一个。这时,就要把三个除数的最小公倍数 3*4*5 = 60 作为一个周期从94里减去,得
94-60 = 34
这里得到的34就是我们要求的满足条件且“最小的”自然数。
顺便说一句,“基数”这个词并非有关文献的叫法,而是本人为了叙述方便杜撰的,只可意会而不可缪传!
国考真题的解
掌握了以上的方法,现在可以求本文开头提到的国考真题的解了。
“一个三位数除以9余7,除以5余2,除以4余3,这样的三位数共有( ) 。
A. 5个 B. 6个 C. 7个 D. 8个 ”
解:除数9对应的“基数” :
5*4 = 20
20除以9,余数是2,必须扩大8倍,才可以使余数变为16,再除去一个9,相当于余数是7。故除数9对应的“基数”为20的8倍,即160;
类似地,可以求出除数5、4对应的“基数”分别为72、135;从而
160 + 72 +135 = 367
就是要求的数之一(而且验证无误)。
注意到三个除数的最小公倍数 9*5*4 = 180 是一个周期,所以在不超过999的范围内,从367开始依次加或减若干个周期,可以得到符合题目要求的三位数是
187 367 547 727 907
故本题的正确答案应该选(A)。
分苹果问题的解
原题如下:
“一些苹果,每5个一堆去数剩1个,每6个一堆去数剩2个,每7个一堆去数剩3个,请问至少有多少苹果?”
这道题本来是可以用上面的方法求解的,但由于它简单而且特殊(特殊之处下文要讲到),故利用一个特殊的口诀“最小公倍作周期,余同加余,和同加和,差同减差。”就可以很方便地得到答案。下面就举例说明这四句口诀的含义和用法:
例1. 从不超过500的数中找出所有满足“被4除余1,被5除余1,被6除余1”的三位数。
此题最显著的特点就是余数相同(都余1),这就叫“余同”。计算口诀是“最小公倍作周期,余同加余”,计算步骤如下:
(1)求出除数4、5、6的最小公倍数:4*5*6 = 120 ;
(2)加上余数1: 120+1 = 121,极易验证这里得到的“121”就是满足条件且最小的一个数;
(3)以121为起点、最小公倍数120为周期依次叠加,就可以找出不超过500的所有满足“被4除余1,被5除余1,被6除余1”的三位数为121 、241 、 361 、 481。
例2. 满足“被4除余3,被5除余2,被6除余1”的最小的三位数是多少?
此题的特点是“除数与余数的和”相同(4+3=7 ,5+2=7 ,6+1=7),这就叫“和同”。计算口诀是“最小公倍作周期,和同加和”,计算步骤如下:
(1)求出除数4、5、6的最小公倍数:4*5*6 = 120 ;
(2)加上“除数与余数的和7”: 120+7 = 127,不难验证 “127”就是本题的正确答案。
(注:如果本题不是求最小的“三位数”而是求最小的“自然数”,则应该从127中减去周期120,得到的7即为所求。)
例3. 求“被4除余1,被5除余2,被6除余3”的最小的自然数。
此题的特点是“除数与余数的差”相同(4-1=3 ,5-2=3 ,6-3=3),这就叫“差同”。计算口诀是“最小公倍作周期,差同减差”,计算步骤如下:
(1)求出除数4、5、6的最小公倍数:4*5*6 = 120 ;
(2)减去“除数与余数的差3”: 120-3 = 117,易知“117”就是本题的正确答案。
弄懂了以上四句口诀的含义和用法,再回过头看看本文开头的“分苹果”问题,显然属于“差同减差”的题型,仿照例3,简单的口算就可以得到正确的答案是5*6*7 - 4 = 206。