王海明 珠算归除法来源于筹算,它是用“九归歌”、“撞归歌”和“起一还原歌”进行除法运算的。
归除法的前身是“增成一法”。我国北宋科学家沈括(公元1031-1095年)在《梦溪笔谈》(约成书于公元1086年-1093年)中记载:“算术多门,如求一、上驱、搭因、重因之类,皆不离乘除。唯增成一法,稍异其术,都不用乘除,但补亏就盈而已。假如欲九除者,增一便是,八除者增二便是。”其中“假如欲九除者增一便是,八除者增二便是。”就是九归口诀中“九一下加一”、“八一下加二”的来源。
九归口诀最早见于杨辉的《乘除通变本末》(1274年),书中记载了南宋以前在社会上流传的32句“九归古括”,及杨辉在此基础上形成的四句“九归新括”。摘录如下:
九归新括 九归古括
归数求成十 [九归]遇九成十[八归]遇八成十[七归]遇七成十
[六归]遇六成十[五归]遇五成十[四归]遇四成十
[三归]遇三成十[二归]遇二成十
归余自上加 [九归]见一下一、见二下二、见三下三、见四下四
[八归]见一下二、见二下四、见三下六
[七归]见一下三、见二下六 见三下十二即九
[六归]见一下四、见二下二十即八
[五归]见一作二、见二作四
[四归]见一下十二即六
[三归]见一下二十一即七
半而为五计 [九归]见四五作五[八归]见四作五 [七归]见三五作五
[六归]见三作五 [五归]见二五作五[四归]见二作五
[三归]见一五作五[二归]见一作五
定位退无差 商除于斗上定石者,今石上定十。商除人上得文者,今人上定十。
元代朱世杰对杨辉记载的九归口诀作了进一步完善,并克服了在某些计算时要用双重口诀的缺点。他在《算学启蒙》(1299年)总括中记载了36句九归口诀,与现在的九归口诀基本相同,摘录如下:
一归如一进 见一进成十
二一添作五 逢二进成十
三一三十一 三二六十二 逢三进成十
四一二十二 四二添作五 四三七十二 逢四进成十
五归添二倍 逢五进成十
六一下加四 六二三十二 六三添作五 六四六十四 六五八十二 逢六进成十
七一下加三 七二下加六 七三四十二 七四五十五 七五七十一 七六八十四 逢七进成十
八一下加二 八二下加四 八三下加六 八四添作五 八五六十二 八六七十四 八七八十六 逢八进成十
九归随身下 逢九进成十
后来,元代贾亨(约14世纪末-15世纪初)的《算法全能集》(成书年代待考)、安止斋(约14世纪)的《详明算法》(1373年),明代吴敬(约15世纪)《九章算法比类大全》(1450年)、王文素《算学宝鉴》(1524年)、徐心鲁订正《盘珠算法》(1573年)、柯尚迁(1500-1582)《数学通轨》(1578年)、程大位(1533-1606年)《算法统宗》(1592年)等许多算书均转载引录,只是个别字句稍有修改,九归口诀更为完善,逐步成为后来通用的九归口诀。
由于九归口诀只适用于一位除法,不能解决多位除法的问题。如在多位的归除遇到法(注:除数)实(注:被除数)同头、而法大于实(例如645÷65)时,即“同头无余”,就不可能用九归口诀定商;又如多位除法用九归口诀定得的初商,有时偏大,需要退商,才可求得确商。为此,朱世杰在《算学启蒙》中说:“实少法多从法归,实多满法进前居。常存除数专心记,法实相停九十余。然将释九数呼除。流传故泄真消息,求一穿韬总不如。”其中“法实相停九十余”指的就是撞归法,可以解决“同头无余”的问题;“但遇无除还头位”指的就是起一法,可以解决初商偏大的问题。但《算学启蒙》中尚未记录“撞归”和“起一”口诀。
最早记录有“撞归”口诀的是朝鲜所传的《授时历捷法立成》(1343年),书中“飞归除法歌”内就有8句“撞归”口诀:
见一无除作九一,见二无除作九二,
见三无除作九三,见四无除作九四,
见五无除作九五,见六无除作九六,
见七无除作九七,见八无除作九八。
最早明确提出“撞归”一词的是元末数学家丁巨(约14世纪),他在《丁巨算法》(1355年)的一道例题中,记载了这样一段话:“以三归五除之,呼逢三进一十,除一五如五;呼三一三十一,除三五一十五;呼撞归九十三,除五九四十五;呼撞归九十三,除五九四十五;呼三二六十二,除五六三十;呼三二六十二,逢三进一十,除五七三十五;呼逢三进一十,除一五如五;呼撞归九十三,除五九四十五。总得谷一千三百九十九石六斗七升一合九勺。”由于现存《丁巨算法》已是残卷,所以没有发现完整的撞归口诀。
元末数学家贾亨在《算法全能集》(具体成书年代待考)中对撞归法进行了解释说明:“撞归法,谓如四归见四,本作一十,然下位无除,不以为十,以四撞身为九十四,则下位有数除也,故谓之撞归。推此法内用之,余仿此。”书中还记载了撞归口诀:“二归为九十二,三归为九十三,四归为九十四,五归为九十五,六归为九十六,七归为九十七,八归为九十八,九归为九十九。”
与贾亨同时代的数学家安止斋在其《详明算法》(1373年刻本)中也记载了撞归法,其口诀已与现今使用的撞归口诀基本一致了。现摘录如下:“又有撞归之法,皆变通之术也,亦不可不知,今具列如后:见二无除作九二,见三无除作九三,见四无除作九四,见五无除作九五,见六无除作九六,见七无除作九七,见八无除作九八,见九无除作九九。”
“起一法”是在归除法中调整商数的运算方法之一,即试商偏大时将试商由大改小的方法,也称“退商法”。最早提出“起一”一词的是元代贾亨的《算法全能集》:“归除歌曰:惟有归除法更奇,将身归了次除之。有归若是无除数,起一回将元数施。或值本归归不得,撞归之法莫教迟。”但书中没有记载具体的起一口诀。最早载有起一口诀的是明代吴敬的《九章详注比类算法大全》:“无除减二下还二,无除减三下还三,无除减四下还四,无除减五下还五,无除减六下还六,无除减七下还七,无除减八下还八,无除减九下还九。”
由元末明初各家算书记载可知,当时筹算归除法已逐渐定型。明代把归除法移植到算盘上,只是计算工具有所改变,计算方法却没有变动。
|