本章和以下各章介紹傳統的珠算除法,這種除法須用到口訣。仿照乘法的「九因歌」,傳統珠算的口訣稱為「九歸歌」,不過沒有「九因歌」那樣整齊。「九因歌」從「一一如一」到「九九八十一」共有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至小數點後一位的例子:
請注意上面的直式可以分解成以下三個可直接用「九因歌」加上補零求解的除法:
上述計算方法其實應用了以下原理:設
並且有
那麼從(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,即
上圖中的多位數除法就是上述原理的應用,即先把被除數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:以下列出的是最傳統的口訣。其實當代已有改良了的口訣,例如「二一添作五」在當代亦作「二一分作五」,「三一三十一」在當代亦作「三一三餘一」,「五一添作二」在當代亦作「五一倍作二」等。另請注意不要把「九歸歌」中的某些口訣與「九因歌」中的口訣混淆,例如「四三七十二」是「九歸歌」(即除法)的口訣,而「四三一十二」卻是「九因歌」(即乘法)的口訣。