珠算解難:九歸歌與單歸法


本章和以下各章介紹傳統的珠算除法,這種除法須用到口訣。仿照乘法的「九因歌」,傳統珠算的口訣稱為「九歸歌」,不過沒有「九因歌」那樣整齊。「九因歌」從「一一如一」到「九九八十一」共有81句,包羅了所有一位正整數相乘的結果;而「九歸歌」卻並非如此。以下先列出「九歸歌」的口訣(註1):

一歸:逢一進一逢二進二逢三進三逢四進四逢五進五逢六進六逢七進七逢八進八逢九進九
二歸:二一添作五逢二進一逢四進二逢六進三逢八進四    
三歸:三一三十一三二六十二逢三進一逢六進二逢九進三    
四歸:四一二十二四二添作五四三七十二逢四進一逢八進二    
五歸:五一添作二五二添作四五三添作六五四添作八逢五進一    
六歸:六一下加四六二三十二六三添作五六四六十四六五八十二逢六進一   
七歸:七一下加三七二下加六七三四十二七四五十五七五七十一七六八十四逢七進一  
八歸:八一下加二八二下加四八三下加六八四添作五八五六十二八六七十四八七八十六逢八進一 
九歸:九一下加一九二下加二九三下加三九四下加四九五下加五九六下加六九七下加七九八下加八逢九進一

上表每一行最左一欄「n歸」中的n可被看成這些口訣的行號,該行所列的口訣就是以n (1 ≤ n ≤ 9)作為除數的除法口訣。上表中的口訣可分為四大類,以下逐一解釋。第一類口訣的格式為「逢x進y」,其中n (即這句口訣所在的行號)為除數,x為被除數,y為商數,例如「三歸」一行中的「逢六進二」便代表6 / 3 = 2。這句口訣所用的「進」字也反映了珠算除法的特點。回顧《珠算解難:珠算的加、減、乘法 》,可以看到珠算乘法使用一種「向右移積」的技巧,例如設被乘數為n位整數,乘數為1位整數,那麼乘積的個位便位於被乘數個位右面的一檔。跟乘法相似,珠算除法採取一種「向左移商」的技巧。簡言之,設被除數為n位整數,除數為1位整數,那麼商數的最高位便位於被除數最高位左面的一檔。以下以6 / 3為例說明上述「向左移商」技巧,開始時首先把除數3和被除數6分別佈在算盤左端和右面,在代表6的一檔左側預留至少兩個空檔(其中一個空檔用來放置商數,另一個空檔則用來把商數與除數隔開),並把「定位點」撥至被除數個位向左數第一檔(亦即被除數的十位)的右側,如下圖所示:

根據「逢六進二」,我們把放置被除數那一檔的六粒算珠撥走,並在其左面一檔撥上兩粒算珠,如下圖所示:

至此運算已完成,上圖顯示商數為2。

第二類口訣的格式為「nx添作y」,其中n為除數,10 × x為被除數(註2),y為商數,例如「二一添作五」便代表10 / 2 = 5。請注意在計算10 / 2時,我們應把「定位點」撥至被除數十位(即代表1的一檔)的右側,如下圖所示:

這句口訣使用「添」字,表示把代表1的那一檔的一粒算珠撥走,並在同一檔加5 (請注意「進五」與「添作五」的差別),如下圖所示:

上圖顯示商數為5。

第三類口訣的格式為「nxy十z」,其中n為除數,10 × x為被除數,y為商數,z為餘數,例如「四三七十二」便代表30 / 4 = 7..2 (註3)。在計算30 / 4時,我們應把「定位點」撥至被除數十位(即代表3的一檔)的右側。這句口訣使用「七十二」,表示把代表3的一檔的三粒算珠撥走,在同一檔加7,並在其右側一檔加2,如下圖所示:

上圖顯示商數為7,餘數為2。請注意我們應把上圖最右面兩檔中的算珠解讀成「7..2」而非「7.2」,這是算盤與一般計數機在顯示除數結果時的差異。

第四類口訣的格式為「nx下加z」,其中n為除數,10 × x為被除數,x亦為商數,z為餘數,例如「七二下加六」便代表20 / 7 = 2..6。在計算20 / 7時,我們應把「定位點」撥至被除數十位(即代表2的一檔)的右側。這句口訣使用「下加六」,表示把代表2的一檔的算珠保持在原位不動(即商數就是2),並在其右側一檔加6,如下圖所示:

上圖顯示商數為2,餘數為6。

綜合運用上述口訣,便可用算盤進行「被除數」為多位數,「除數」為一位數的除法,在珠算上這種除法稱為「單歸法」。「單歸法」的原理與我們自幼學習的直式除法既有相同又有不同之處,以下讓我們看用直式計算229 / 7至小數點後一位的例子:

請注意上面的直式可以分解成以下三個可直接用「九因歌」加上補零求解的除法:

上述計算方法其實應用了以下原理:設

x = x1 + x2 + ...... + xk     (1)

並且有

x1 / n = y1..z1     (2)
(z1 + x2) / n = y2..z2     (3)
......
(zk−1 + xk) / n = yk..zk     (4)

那麼從(2)至(4)可得x1 = ny1 + z1,(z1 + x2) = ny2 + z2 ...... (zk−1 + xk) = nyk + zk。利用(1)和上述結果,可得x = x1 + x2 + ...... + xk = ny1 + z1 + x2 + ...... + xk = ny1 + ny2 + z2 + ...... + xk = ...... = ny1 + ny2 + ...... + nyk + zk = n(y1 + y2 + ...... + yk) + zk,即

x / n = (y1 + y2 + ...... + yk)..zk     (5)

上圖中的多位數除法就是上述原理的應用,即先把被除數229分解成220 + 9 + 0,接著計算220 / 7 = 30..10 (註4);然後把餘數10加上9得19作為新的被除數,再計算19 / 7 = 2..5;然後把餘數5加上0得5作為新的被除數,再計算5 / 7 = 0.7..0.1。根據(5),229 / 7的商數就是上述三個除法的商數之和,餘數則是最後一個除法的餘數,即229 / 7 = 32.7..0.1。

如前所述,直式除法的特點是用乘法的口訣-「九因歌」來求商,這是一種「化除為乘」的方法。珠算的「單歸法」則很不同。由於珠算有獨特的除法口訣-「九歸歌」,在進行「單歸」時可以直接用這些口訣來求商,而無需「化除為乘」。當被除數是多位數時,我們也是把多位數除法分解成較簡單的除法。但由於在「九歸歌」中,所有「被除數」都是一位數(或其十倍),「單歸法」的運算方式跟上述直式除法有所不同。

以上述的229 / 7為例,首先把除數7和被除數229分別佈在算盤左端和右面,並把「定位點」撥至被除數十位(即c檔)的右側,此即我們所求商數的小數點位置,而餘數的小數點位置則在被除數個位(即d檔)右側,如下圖所示:

「單歸法」是從代表被除數第一位的那一檔開始向右逐檔應用「九歸歌」求商。在上圖中,被除數的第一位是位於b檔的2,根據口訣「七二下加六」,我們保持b檔不變,並在c檔加6,如下圖所示:

上述步驟實質上是計算200 / 7 = 20..60,請注意「單歸法」無法像直式除法那樣一開始便計算220 / 7,這是因為「九歸歌」中沒有被除數為22的口訣,故只能先做200 / 7。可是這麼一來,上述步驟求得的商數的第一個位2便會過小(因為229 / 7的商的第一個位應是3)。但這不要緊,因為接下來當處理c檔時,由於現時c檔上的數字8大於7,我們可以應用口訣「逢七進一」,從c檔減去7,並在b檔加1,如下圖所示:

這樣我們便把先前求得的商數的第一個位從2調整為3 (註5)。

請注意剛才應用「逢七進一」時,我們只處理了c檔上的7,餘下的1仍需處理。根據口訣「七一下加三」,我們保持c檔不變,並在d檔加3。由於d檔原已有數字9,為了加3,這時我們要應用橫樑上方最頂的算珠,如下圖所示(請注意這裡我們不能把d檔上的數字進位至c檔,這是因為當前的c檔是用來記錄商數,而d檔則用來記錄被除數的餘下部分,進位會攪亂計算結果(註6)):

接著處理d檔。由於現時d檔上的數字12大於7,應用口訣「逢七進一」,我們從d檔減去7,並在c檔加1,如下圖所示:

我們繼續處理d檔上餘下的5。根據口訣「七五七十一」,我們把d檔上的5改為7,並在e檔加1,如下圖所示:

至此已處理完d檔,現在我們可以根據上圖中a至e檔的數字得知229 / 7 = 32.7..0.1。當然如果算盤足夠長,我們還可以繼續算下去,以求得精確度更高的結果,或甚至算出229 / 7的商數是甚麼循環小數為止(註7)。

註1:以下列出的是最傳統的口訣。其實當代已有改良了的口訣,例如「二一添作五」在當代亦作「二一分作五」,「三一三十一」在當代亦作「三一三餘一」,「五一添作二」在當代亦作「五一倍作二」等。另請注意不要把「九歸歌」中的某些口訣與「九因歌」中的口訣混淆,例如「四三七十二」是「九歸歌」(即除法)的口訣,而「四三一十二」卻是「九因歌」(即乘法)的口訣。

註2:第二至第四類口訣的共同特點是其被除數都小於除數,為免出現小數的問題,故把被除數倍大10倍。

註3:以下用「y..z」代表「商數為y,餘數為z」。請注意本文對商數和餘數採取廣義的定義,即把x / n = y..z理解成等價於x = yn + z的寫法。

註4:在進行直式除法時,我們實際是計算22 / 7 = 3..1;但當把這個除法解釋成計算229 / 7的一個組成部分時,便應把這個除法倍大10倍,成為220 / 7 = 30..10。

註5:由此可見,「單歸法」不適合於直式筆算,這是因為「單歸法」的過程中可能會出現把先前求得的商數的某個位調整的情況,如用筆進行運算,這就要把先前記下的數劃去或擦去並寫上新數,從而造成不便;但對算盤來說這卻不成問題,因為算盤的設計本來就是要方便使用者在計算過程中不斷更新算盤上所記的數。

註6:其實我們也可以選擇進位,但要記著進到c檔的1粒算珠乃屬於被除數的餘下部分而非商數,接下來在處理d檔時不要忘記這個進到c檔的算珠。

註7:任何有理數要麼等於可除盡的小數,要麼等於無限循環小數,詳情請參閱拙文《無限循環小數》



返回數學專題