第三章 算術運算
第五節 籌算乘除捷演算法
籌算乘除法三行布算,很不方便。唐中葉之後適應商業發展的需要,人們著手簡化籌算乘除法,一是化三行布算為一行布算,二是化乘除為加減,通常稱為乘除捷演算法。贗本《夏侯陽算經》中有許多化多位乘法為一位乘法的例子。如某地區共a丁,每丁應納庸調布2.45端(一端=5丈),則共應納布端數為a×2.45=a×7×7÷10÷2,把一個含有三位有效數字的小數乘法化成一位的兩次乘,兩次除,便可在一行內完成運算。一位乘法稱為因,這種方法叫重因法。
一歸如一進,九一進成十。二一添作五,逢二進成十。三一三十一,三二六十二,逢三進成十。四一二十二,四二添作五,四三七十二,逢四進成十。五歸添一倍,逢五九*九*藏*書進成十。六一下加四,六二三十二,六三添作五,六四六十四,六五八十二,逢六進成十……九歸隨身下,逢九進成十。
朱世傑已懂得歸除,但無細草。何平子《詳明演算法》有歸除細草,如48895÷385,為三歸八五除,其細草是:列被除數
,見首位4,呼逢三進一十,成
,呼一八除八,成
,呼一五除五,得
;見餘數首位為10,呼逢六進二十,成
,呼二八除一十六,二五除一十,得
;餘數首位是2,呼三二六十二,為
,呼逢三進一十,成
,呼八七除五十六,五七除三十五,適盡,得127。https://read.99csw.com九-九-藏-書
,見首位4,呼逢三進一十,成
,呼一八除八,成
,呼一五除五,得
;見餘數首位為10,呼逢六進二十,成
,呼二八除一十六,二五除一十,得
;餘數首位是2,呼三二六十二,為
,呼逢三進一十,成
,呼八七除五十六,五七除三十五,適盡,得127。https://read.99csw.com楊輝在《乘除通變本末》中系統總結了唐宋時期化乘除為加減的方法,提出加法代乘五術,減法代除四術。對乘(除)數首位不是1的乘(除)法,可以用加倍、折半等方法將乘(除)數的首位變成1,再用加(減)法代乘(除),這種方法稱為「求一」術。楊輝《乘除通變本末
https://read.99csw.com》中有「求一代乘除」歌訣。「求一乘」的歌訣是:「五、六、七、八、九,倍之數不走。二、三須當半,遇四兩折紐。倍折本從法,實即反其有(自注:倍法必折實,倍實必折法)。用加以代乘,斯數足可守。」例如237×56=(237÷2)×(56×2)=118.5×112,用加二位完成乘法。14世紀歸除歌訣簡化后,這種方法便被淘汰。
歸除是在九歸與減法基礎上發展起來的。歸指一位除法,從1到9的一位除法稱為九歸。經過楊輝、朱世傑等的總結髮展,《算學啟蒙》中的九歸歌訣與現今珠算口訣形式基本一致:
後來,人們又創造了撞歸口訣,解決大除數如何確定商的問題。至此,籌算捷演算法及其歌訣已發展到算籌與籌算無法容納的https://read•99csw•com地步,便產生了珠算盤和珠算術,籌算口訣變成了珠算口訣,即珠算的演算法語言。
化乘除為加減的方法稱為身外加減法,是乘(除)數首位為1的一種乘除捷演算法。贗本《夏侯陽算經》卷下有題:今有絹2454匹,每匹值錢1.7貫,問值多少錢?其演算法是2454×1.7=2454×17÷10=(24540+2454×7)÷10,其中2454×17的程序是:
。可見其要領就是在被乘數本身的10倍外加上被乘數與乘數其他位之積,故稱為身外加法。自然,乘數的兩有效數字間有○時,便用隔位加。身外減法與此相類似。
。可見其要領就是在被乘數本身的10倍外加上被乘數與乘數其他位之積,故稱為身外加法。自然,乘數的兩有效數字間有○時,便用隔位加。身外減法與此相類似。