第三章 算术运算 第五节 筹算乘除捷算法
筹算乘除法三行布算,很不方便。唐中叶之后适应商业发展的需要,人们着手简化筹算乘除法,一是化三行布算为一行布算,二是化乘除为加减,通常称为乘除捷算法。赝本《夏侯阳算经》中有许多化多位乘法为一位乘法的例子。如某地区共a丁,每丁应纳庸调布2.45端(一端=5丈),则共应纳布端数为a×2.45=a×7×7÷10÷2,把一个含有三位有效数字的小数乘法化成一位的两次乘,两次除,便可在一行内完成运算。一位乘法称为因,这种方法叫重因法。
化乘除为加减的方法称为身外加减法,是乘(除)数首位为1的一种乘除捷算法。赝本《夏侯阳算经》卷下有题:今有绢2454匹,每匹值钱1.7贯,问值多少钱?其算法是2454×1.7=2454×17÷10=(24540+2454×7)÷10,其中2454×17的程序是:。可见其要领就是在被乘数本身的10倍外加上被乘数与乘数其他位之积,故称为身外加法。自然,乘数的两有效数字间有○时,便用隔位加。身外减法与此相类似。
杨辉在《乘除通变本末》中系统总结了唐宋时期化乘除为加减的方法,提出加法代乘五术,减法代除四术。对乘(除)数首位不是1的乘(除)法,可以用加倍、折半等方法将乘(除)数的首位变成1,再用加(减)法代乘(除),这种方法称为“求一”术。杨辉《乘除通变本末》中有“求一代乘除”歌诀。“求一乘”的歌诀是:“五、六、七、八、九,倍之数不走。二、三须当半,遇四两折纽。倍折本从法,实即反其有(自注:倍法必折实,倍实必折法)。用加以代乘,斯数足可守。”例如237×56=(237÷2)×(56×2)=118.5×112,用加二位完成乘法。14世纪归除歌诀简化后,这种方法便被淘汰。
归除是在九归与减法基础上发展起来的。归指一位除法,从1到9的一位除法称为九归。经过杨辉、朱世杰等的总结发展,《算学启蒙》中的九归歌诀与现今珠算口诀形式基本一致:
一归如一进,九一进成十。二一添作五,逢二进成十。三一三十一,三二六十二,逢三进成十。四一二十二,四二添作五,四三七十二,逢四进成十。五归添一倍,逢五进成十。六一下加四,六二三十二,六三添作五,六四六十四,六五八十二,逢六进成十……九归随身下,逢九进成十。
朱世杰已懂得归除,但无细草。何平子《详明算法》有归除细草,如48895÷385,为三归八五除,其细草是:列被除数,见首位4,呼逢三进一十,成,呼一八除八,成,呼一五除五,得;见余数首位为10,呼逢六进二十,成,呼二八除一十六,二五除一十,得;余数首位是2,呼三二六十二,为,呼逢三进一十,成,呼八七除五十六,五七除三十五,适尽,得127。
后来,人们又创造了撞归口诀,解决大除数如何确定商的问题。至此,筹算捷算法及其歌诀已发展到算筹与筹算无法容纳的地步,便产生了珠算盘和珠算术,筹算口诀变成了珠算口诀,即珠算的算法语言。