<p class="ql-block">余數(shù)定理對于一般人來說,可能有些陌生,但提起韓信點兵法,知道的人就多了,小學奧數(shù)題中也會碰到這樣的題。中國余數(shù)定理是老祖宗的研究成果,曾經(jīng)領先世界一千多年,是國際數(shù)學界命名的唯一冠以“中國”的數(shù)學定理。以下試從非專業(yè)角度作一解讀。 </p><p class="ql-block" style="text-align:center;">* * * * * * * * * *</p> <p class="ql-block">1801年,意大利天文學家皮亞齊發(fā)現(xiàn)了一顆小行星,命名為谷神星,但因耽誤了觀測,失去了這顆星的軌跡。數(shù)學家高斯通過以前的觀測數(shù)據(jù),計算出谷神星的運行軌跡,成功地找到了谷神星。高斯的計算依據(jù)的是他剛剛發(fā)表在《算術研究》一書中的同余理論。 </p><p class="ql-block">此時的高斯并不知道,1400年之前,在地球的另一邊,已經(jīng)有人提出同余問題,并推導出解決同余問題的定理,只是沒有給它命名。這就是“物不知數(shù)”問題,記載在中國南北朝時期的數(shù)學專著《孫子算經(jīng)》中。 </p><p class="ql-block">19世紀中葉,英國傳教士把《孫子算經(jīng)》中“物不知數(shù)”問題的解法帶回歐洲。西方數(shù)學界發(fā)現(xiàn),中國一千多年前的解法與高斯得出的同余定理相合,因而將其定名為“中國余數(shù)定理”(舊譯“中國剩余定理”)。由于定理最早的提出者是孫子,又稱之為“孫子定理”。 </p><p class="ql-block">“物不知數(shù)”問題出自《孫子算經(jīng)》下卷26題:“今有物不知其數(shù),三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二,問物幾何?答曰:‘二十三’”。 </p><p class="ql-block">這道題的意思是,一堆東西,比如蘋果,3個3個一數(shù)剩下2個,5個5個一數(shù)剩下3個,7個7個一數(shù)剩下2個,問這堆蘋果有多少個? </p><p class="ql-block">這個問題看起來不復雜,但《孫子算經(jīng)》給出了一個有些燒腦的解法: </p><p class="ql-block">術曰:三三數(shù)之,剩二,置一百四十;五五數(shù)之,剩三,置六十三;七七數(shù)之,剩二 ,置三十。并之,得二百三十三,以二百一十減之,即得。 </p><p class="ql-block">上面的解法是說,根據(jù)本題給出的三個條件分別得到140、63和30三個數(shù),三數(shù)相加等于233,再減去210,最終得到23這個答案。 </p><p class="ql-block">這些數(shù)是怎么得來的,沒講,讓人覺得很玄妙。中國古代師傅教徒弟,道理經(jīng)常不說透,讓徒弟自己悟出來。這時是公元5世紀。 </p><p class="ql-block">到了13世紀,南宋數(shù)學家秦九韶把《孫子算經(jīng)》中的這個問題拿出來重新研究,把這類問題的解法研究透了,并定名為“大衍求一術”,寫入《數(shù)書九章》的數(shù)學專著中。 </p><p class="ql-block">當時有好事者將大衍求一術求解“物不知數(shù)”問題的方法簡化成四句詩: </p><p class="ql-block">三人同行七十稀,</p><p class="ql-block">五樹梅花廿一支,</p><p class="ql-block">七子團圓正半月,</p><p class="ql-block">除百零五使得知。 </p><p class="ql-block">下面試作解讀。 </p><p class="ql-block">《孔子算經(jīng)》中說的“物不知數(shù)”,就是未知數(shù),在本題中相當于被除數(shù);三三一數(shù),五五一數(shù),七七一數(shù),這里的3、5、7相當于除數(shù),剩幾就是余幾,即余數(shù)。這里的已知條件是余數(shù)和除數(shù),求被除數(shù)。 </p><p class="ql-block">回到那首詩,它實際上是除數(shù)為3、5、7,余數(shù)為任意數(shù)的“物不知數(shù)”題的通解口訣(下稱“四句訣”)。中國古代數(shù)學家發(fā)現(xiàn),一個數(shù)分別被多個數(shù)相除,已知它們的余數(shù),這個數(shù)一定是一個更大的除數(shù)的余數(shù)。此題中更大的除數(shù),就是四句訣最后一句中的“百零五”,即3、5、7的最小公倍數(shù)105。前三句中的“七十”、“廿一”、“半月”,即70、21、15,是三除數(shù)中每兩個除數(shù)的公倍數(shù)。計算求解時,三個數(shù)先分別與除數(shù)3、5、7(“三人”、“五樹”、“七子”)的余數(shù)相乘,然后再相加。在“物不知數(shù)”的例題中,余數(shù)分別為2、3、2,計算過程如下:x=2×70+3×21+2×15=233 </p><p class="ql-block">得數(shù)233是符合題意的其中一個數(shù)。因為它又是除數(shù)105的余數(shù),所以233還要減去兩次105,得到23。23是符合條件的最小正整數(shù)解。 </p><p class="ql-block">這里出現(xiàn)一個疑問:四句訣中給出的21和15分別是3與7的乘積和3與5的乘積,而70卻不是5與7的乘積35,而是35的2倍。此處的不一致,是因為這里的“70”隱含了運算中的一個數(shù)--乘率,實際應表述為“35×2”,乘率為2。也就是說,對于一個數(shù)除以任意三個數(shù)的余數(shù)題,大衍求一術的通解公式可以這樣表述(設三除數(shù)為a、b、c):</p><p class="ql-block">x=除a的余數(shù)×b和c的積×乘率1+除b的余數(shù)×a和c的積×乘率2+除c的余數(shù)×a和b的積×乘率3。 </p><p class="ql-block">以上公式可以看作是三個部分相加,每個部分由3個除數(shù)之一的余數(shù)乘以另兩個除數(shù)的乘積,再乘以乘率組成。此公式可擴展適用于有更多除數(shù)的余數(shù)題。 </p><p class="ql-block">大衍求一術最重要的貢獻就是乘率的計算法。前面提到,四句訣中的“70”包含了乘率“2”,這個數(shù)是怎么得來的? </p><p class="ql-block">這個乘率要依b和c的積35除以3的余數(shù)而定。35除以3,余2。這時要找到一個數(shù),乘以余數(shù)2后,滿足除以3余1,這個數(shù)就是乘率。2乘以余數(shù)2等于4,4除以3余1,滿足條件,乘率就是2。而a和c的積是21,21除以5余數(shù)是1;a和b的積是15,15除以7余數(shù)也是1。由于余數(shù)為1,乘率也為1,計算中忽略不計,后兩個的乘率在四句訣中沒有留下痕跡。 </p><p class="ql-block">“物不知數(shù)”題在小學奧數(shù)題中經(jīng)常出現(xiàn)。常見的題型有韓信點兵法,也是已知幾個幾個一排余幾,求總數(shù)。但小學奧數(shù)題的解法均不用大衍求一的解法。像《孫子算經(jīng)》中的這道題,奧數(shù)的解法簡單多了:5個5個一數(shù)余3,最小的數(shù)是5+3=8,8同時滿足除以3余2,但不滿足除以7余2。8加上15(3×7的積)是符合前兩個條件的第二小的數(shù),得到23,23同時滿足除以7余2的第三個條件。假如23不符合第三個條件,則23還要再加上15,繼續(xù)在滿足前兩個條件的數(shù)的范圍里去找符合第三個條件的數(shù)。這種解法叫逐步滿足法。 </p><p class="ql-block">遇到再復雜一點兒的題,奧數(shù)解法中有不定方程解法,上題列方程(a、b、c為三除數(shù)的商)如下: </p><p class="ql-block">3a+2=5b+3=7c+2</p><p class="ql-block">a、b、c最小的一組正整數(shù)解為:</p><p class="ql-block">a=7</p><p class="ql-block">b=4</p><p class="ql-block">c=3</p><p class="ql-block">將a=7代入3a+2,得到23。 </p><p class="ql-block">看起來,奧數(shù)的解法簡單,大衍求一的解法繁瑣,為什么呢? </p><p class="ql-block">這是因為,奧數(shù)只是挑選出不用大衍求一術就能解的題,而大衍求一術針對的是天文歷法方面的計算,數(shù)字很大,除數(shù)多達10個以上,一般無法簡單地用逐步滿足法或方程解法得到結果。大衍求一術是求解同余問題的通解法。 </p><p class="ql-block">下面這道題,就只有用大衍求一的方法去解。 </p><p class="ql-block">今有數(shù)不知總,以5累減之剩3,以715累減之剩538,以247累減之剩174,以391累減之剩109,以187累減之也剩109,問總數(shù)若干。(得數(shù):5200018)[清]黃宗憲:《求一術通解》 </p><p class="ql-block">上題中的除數(shù)(“累減之”的意思是“除”),其中之一化簡后轉化成除以143余108。由于數(shù)字較大,無法直接看出108乘以幾(乘率)滿足除以143余1,此時就需要用大衍求一術中的輾轉相除法:將143與108相除,108與相除后的余數(shù)再相除,前面的余數(shù)與后面的余數(shù)再相除,直到最后得到1時再反推出等式1=108×49-143×37,此式等同于108×49÷143=37……1,符合余1的條件,因此得出乘率為49。有了乘率,代入前面提到的大衍求一術的計算公式就可以計算出結果了。 </p><p class="ql-block">這個解題過程就是在“求一”。 </p><p class="ql-block">前文中提到的人物: </p><p class="ql-block">孫子是南北朝時期的人,生平事跡未見記載,和《孫子兵法》的作者同名,時代不同。 </p><p class="ql-block">宋人秦九韶研究數(shù)學是業(yè)余愛好。他年輕時通過科舉考試出仕,長期擔任地方官,《數(shù)書九章》一書是他在為父守孝期間完成的。 </p><p class="ql-block">瑞士出生的數(shù)學家高斯一生心無旁騖,潛心于數(shù)學研究,成果斐然。他24歲時用數(shù)學方法找到谷神星,30歲被德國哥廷根大學看中,聘請為教授和天文臺臺長,直到去世。 </p><p class="ql-block">注:本文中的“除數(shù)”,在同余理論中稱為“?!保╩od)。同余符號為“≡”。比如前文中的23除以3余2,用同余概念表達為:23和2對于模3同余,意思是23和2除以3,余數(shù)相同(均為2),記作:23≡2 (mod 3)。</p>