十九、韩信点兵(1 / 1)

昨天马先生结束了四则问题以后,曾经叫我们复习关于质数、最大公因数和最小公倍数的问题。夜晚很好,天气不十分热,我取了《开明算术教本》上册,阅读关于这些事项的第七章。从前学习它的时候,是否感到困难,印象已很模糊了。现在要说“一点困难没有”,我不敢这样自信。不过,像从前遇见四则问题那样地“丈二和尚”摸不着头脑,确实没有。也许其中的难点,我不曾发觉吧!怀着这样的心情,今天,到课堂去听马先生的讲。

“我叫你们复习的,都复习过了吗?”马先生一走上讲台就问。

“复习过了!”两三个人齐声回答。

“那么,有什么问题?”

各人都是瞠起两眼,望着马先生,没有一个问题提出来。马先生在这静默中,看了全体一遍:

“学算学的人,大半在这一部分不会感到什么困难的,大约你们也不会有什么问题了。”

我不曾发觉什么困难,照这样说,自然是由于这部分材料,比较容易的缘故。心里这么一想,就期待着马先生的下文。

“既然大家都没有问题,我且提出一个来问你们:这部分材料,我们也用得着画图来处理它吗?”

“那似乎可以不必了!”周学敏回答。

“似乎?可以就可以,不必就不必,何必‘似乎’!”马先生笑着说。

“不必!”周学敏斩钉截铁地说。

“问题不在‘必’和‘不必’。既有了这样一种法门,正可拿它来试试,看变得出什么花样锦来,不是也有趣吗?”马先生说完,停了一停,再问:

“这一部分所处理的材料,是些什么?”

当然,这是谁也回答得上来的,大家抢着说:

“找质数。”

“分质因数。”

“求最大公因数和最小公倍数。”

“归根结底,不过是判定质数和计算倍数与因数,——这只是一种关系的两面,12是6、4、3、2的倍数;反过来看,6、4、3、2便是12的因数了。”马先生这样结束了大家的话,而掉转话头:

“闲言少说,言归正传。你们将横线每一大段当1表示倍数,纵线每一小段当1表示数目,画表示2的倍数和3的倍数的两条线。”

这只是“定倍数”的问题,已没有一个人不会画了。马先生在黑板上也画了一个——图75。

“从这图上,可以看出些什么来?”马先生问。

“2的倍数是2、4、6、8、10、12。”我答。

“3的倍数是3、6、9、12、15、18。”周学敏答。

“还有呢?”

“5、7、11、13、17都是质数。”王有道答。

“怎么看出来的?”

这几个数都是质数,我原是晓得的,但由图上,怎样看得出来,我却茫然。马先生的这么一追问,真是“实获我心”了。

“OA和OB两条线都没有经过它们,所以它们既不是2的倍数,也不是3的倍数……”王有道说到这里,突然停住了。

“怎样?”马先生问道。

“它们总是质数呀!”王有道很不自然地说。这一来大家都已觉到,这里面一定有了漏洞,王有道大约已明白了。不期然而然地,一齐笑起来。笑,我也是跟着笑的,不过我并不曾将这漏洞觉到。

“这没有什么可笑。”马先生很郑重地说,“王有道,你回答的时候也有点迟疑了,为什么呢?”

“由图上看来,它们都不是2和3的倍数,而且我知道它们都是质数,所以我那样说。但突然想到,25既不是2和3的倍数,也不是质数,便疑惑起来了。”王有道这么一解释,我才恍然大悟,漏洞原是在这里。

马先生露出很满意的神气,接着说:

“其实这个判定法,本是对的,不过欠精密一点,你是上了图的当。假如图还画得详细些,你就不会这样说了。”马先生叫我们另画一个较详细些的图——图76——将表示2、3、5、7、11、13、17,19、23、29、31、37、41、43、47各倍数的线都画出来。(这里的图,右边截去了一部分。)不用说,这些数都是质数。由图上,50以内的合数当然很明白地可以看出来。不过,我很有点儿怀疑——马先生原来是要我们从图上找质数,既然把表示质数的倍数的线都画了出来,还用得找什么质数呢?

马先生还叫画一条表示6的倍数的线,OP。他说:“由这张图看,当然再不会说,不是2和3的倍数的,便是质数了。你们再用表示6的倍数的一条线OP作标准,仔细看一看。”

经过十来分钟的观察,我发现了:

“质数都比6的倍数差1。”

“不错,”马先生说,“但是应得补充一句——除了2和3。”这确实是我所不曾注意到的。

“为什么5以上的质数都比6的倍数差1呢?”周学敏提出了这样一个问题。

马先生叫我们回答,但没有人答得上来,他说:

“这只是事实问题,不是为什么的问题。换句话说,便是整数的性质本来如此,并不为点什么。”对于这个解释,大家都好像有点莫名其妙,没有一个人说话。马先生接着说:

“一点也不稀罕!你们想一想,随便一个数,用6去除,结果怎样?”

“有的除得尽,有的除不尽。”周学敏说。

“除得尽的就是6的倍数,当然不是质数。除不尽的呢?”

没有人回答,我也想得到有的是质数,如23;有的不是质数,如25。马先生见没有人回答,便这样说:

“你们想想看,一个数用6去除,若除不尽,它的余数是什么?”

“1,例如7。”周学敏说。

“5,例如17。”另一个同学说。

“2,例如14。”又是一个同学说。

“4,例如10。”其他两个同学同时说。

“3,例如21。”我也想到了。

“没有了。”王有道来一个结束。

“很好!”马先生说,“用6除剩2的数,有什么数可把它除尽吗?”

“2。”我想它用6除了剩2,当然是个偶数,可用2除得尽。

“那么,除了剩4的呢?”

“一样!”我很高兴地说。

“除了剩3的呢?”

“3!”周学敏很快地说。

“用6除了剩1或5的呢?”

这我也明白了。5以上的质数既不能用2和3除得尽,当然也不能用6除得尽。用6去除不是剩1便是剩5,都和6的倍数差1。

不过马先生又另外提出一个问题:

“5以上的质数都比6的倍数差1,掉转头来,可不可以这样说呢?——比6的倍数差1的都是质数?”

“不!”王有道说,“例如25是6的4倍多1,35是6的6倍少1,都不是质数。”

“这就对了!”马先生说,“所以你刚才用不是2和3的倍数来判定一个数是质数,是不精密的。”

“马先生!”我的疑问始终不能解释,趁他没有说下去,我便问:“由作图的方法,怎样可以判定一个数是不是质数呢?”

“这是应当有的问题,刚才,画的线都是表示质数的倍数的,你们会想到,这不能用来判定质数。但是若果从画图的过程看,就可明白了。首先画的是表示2的倍数的线OA,由它,你们可以看出哪些数不是质数?”

“4、6、8……一切偶数。”我答道。

“接着画表示3的倍数的线OB呢?”

“6、9、12……”一个同学说。

“4既不是质数,上面一个是5,第三就画表示5的倍数的线OC。”这一来又得出它的倍数10、15等等。再依次上去,6已是合数,所以只好画表示7的倍数的线OD。接着,8、9、10都是合数,只好画表示11的倍数的线OE。照这样做下去,把合数渐渐地淘汰了去,所画的线所表示的不是全都是质数的倍数吗?——这个图,我们无妨叫它质数图。”

“我还是不明白,用这张质数图怎样判定一个数是否是质数。”我跟着发问。

“这真叫作百尺竿头,只差一步了!”马先生很诚恳地说,“你试举一个合数与一个质数出来。”

“15与37。”

“从15横看过去,有些什么数的倍数?”

“3的和5的。”

“从37横着看过去呢?”

“没有!”我已懂得了。在质数图上,由一个数横看过去,若有别的数的倍数,它自然是合数;一个也没有的时候,它就是质数。不只这样,例如15,还可知道它的质因数是3和5。最简单的,6含的质因数是2和3。马先生还说,用这个质数图来把一个合数分成质因数,也是容易的。这法则是如此:

例一:将35分成质因数的积。

由35横看到D得它的质因数有一个是7,往下看是5,它已是质数,所以

35=7×5

本来,若是这图的右边没有截去,7和5都可由图上直接看出来的。

例二:将12分成质因数的积。

由12横看得Q,表示3的4倍。4还是合数,由4横看得R,表示2的2倍,2已是质数,所以

12=3×2×2=3×22

关于质数图的作法,以及用它来判定一个数是否是质数,用它来将一个合数析成质因数的积,我们都已明白了。马先生提出求最大公因数的问题。前面所说过的既已明了,这自然是迎刃而解的了。

例三:求12、18和24的最大公因数。

从质数图上,——如图77——我们可以看出24、18和12都有因数2、3和6。它们都是24、18、12的公因数,而6就是所求的最大公因数。

“假如不用质数图,怎样由画图法找这最大公因数?”马先生问王有道。他一面思索,一面用手指在桌上画来画去,后来他这样回答:

“把最小一个数以下的质数找出来,再画出表示这些质数的倍数的线。由这些线上,就可看出各数所含的公共质因数。它们的乘积,就是所求的最大公因数。”

例四:求6、10和15的最小公倍数。

依照前面各题的解法,本题是再容易没有了。OA,OB,OC相应地各表示6、10和15的倍数。A,B和C同在30的一条横线上,30便是所求的最小公倍数。

例五:某数,三个三个地数,剩一个;五个五个地数,剩两个;七个七个地数,也剩一个,求某数。

马先生写好了这个题,叫我们讨论画图的方法。自然,这不是很难的,经过一番讨论,我们就得出图79来。1A,2B,1C各线分别表出3的倍数多1,5的倍数多2,7的倍数多1来。而这三条线都经过22的线上,22即是所求的。——马先生说,这是最小的一个,加上3、5、7的公倍数,都合题。——不是吗?22正是3的7倍多1,5的4倍多2,7的3倍多1。

“你们由画图的方法,总算把解答求出来了,但是怎样算法呢?”马先生这一问,却把我们难住了。最先有的人说是求它们的最小公倍数,这当然不对,3、5、7的最小公倍数是105呀!后来又有人说,从它们的最小公倍数中减去3除所余1,也有人说减去5除所余的2,自然都不是。从图上仔细去看,也毫无结果。最终只好去求教马先生了。他见大家都束手无策,便开口道:

“这本来是咱们中国的一个老题目,它还有一个别致的名称——韩信点兵。它的算法,有诗一首:

三人同行七十稀,五树梅花廿一枝,

七子团圆月正半,除百零五便得知。

你们懂得这诗的意思吗?”

“不懂!不懂!”许多人都说。于是马先生加以解释:

“这也是和‘无边落木萧萧下’的谜一样。三人同行七十稀,是说3除所得的余数用70去乘它。五树梅花廿一枝,是说5除所得的余数,用21去乘。七子团圆月正半,是说7除所得的余数用15去乘。除百零五便得知,是说把上面所得的三个数相加,加得的和若大于105,便把105的倍数减去。因此得出来的,就是最小的一个数。好!你们依照这个方法,将本题计算一下看。”下面就是计算的式子:

1×70+2×21+1×15=70+42+15=127

127-105=22

奇怪!对是对了,但为什么呢?周学敏还掉了一个题,“三三数剩二,五五数剩三,七七数剩四”来试,

2×70+3×21+4×15=140+63+60=263

263-105×2=263-210=53

53正是3的17倍多2,5的10倍多3,7的7倍多4。真奇怪!但是为什么?

对于这个疑问,马先生说,把上面的式子改成下面的形式,就可以明白了。

(1)2×70+3×21+4×15=2×(69+1)+3×21+4×15

=2×23×3+2×1+3×7×3+4×5×3

=(2×23+3×7+4×5)×3+2×1

(2)2×70+3×21+4×15=2×70+3×(20+1)+4×15

=2×14×5+3×4×5+3×1+4×3×5

=(2×14+3×4+4×3)×5+3×1

(3)2×70+3×21+4×15=2×70+3×21+4×(14+1)

=2×10×7+3×3×7+4×2×7+4×1

=(2×10+3×3+4×2)×7+4×1

“这三个式子,可以说是同一个数的三种解释:(1)表明它是3的倍数多2;(2)表明它是5的倍数多3;(3)表明它是7的倍数多4。这不是正和题目所给的条件相合吗?”马先生说完了,王有道似乎已经懂得,但又有点怀疑的样子。他踌躇了一阵,向马先生提出这么一个问题:

“用70去乘3除所得的余数,是因为70是5和7的公倍数,又是3的倍数多1。用21去乘5除所得的余数,是因为21是3和7的公倍数,又是5的倍数多1。用15去乘7除所得的余数,是因为15是5和3的倍数,又是7的倍数多1。这些我都明白了。但,这70,21和15怎么找出来的呢?”

“这个问题,提得很合适!”马先生说,“这类题的要点,就在这里。但,这些数的求法,说来话长,你们可以去看开明书店出版的《数学趣味》,里面就有一篇专讲《韩信点兵》的。——不过,像本题,三个除数都很简单,70、21、15都容易推出来。5和7的最小公倍是什么?”

“35。”一个同学回答。

“3除35,剩多少?”

“2——”另一个同学回答。

“注意!我们所要的是5和7的公倍数,同时又是3的倍数多1的一个数。35当然不合用。将2去乘它,得70,既是5和7的公倍数,又是3的倍数多1。至于21和15情形也相同。不过21已是3和7的公倍数,又是5的倍数多1;15已是5和3的公倍数,又是7的倍数多1,所以都用不到再把什么数去乘它了。”

最后,他还补充一句:

“我提出这个题的原意,是要你们知道,它的形式虽和求最小公倍数的题相同,实质上却是两件事,必须加以注意。”