筹算(英語:Rod calculus)是漢字文化圈古代使用算筹进行十进位制计算的程序。

永乐大典 宋代筹算布位图中的數字:七萬一千八百二十四
日本带格筹算板

历史

编辑

筹算具体出现时间已然不可考,但根据典籍记录和考古发现,至少在战国初年筹算已然出现。[1]它使用中国商代发明的十进位制计数,可以很方便地进行四则运算以及乘方开方等较复杂运算,并可以对负数分数作出表示与计算

筹算在公元6世纪由中国传入韓國日本。七世纪的印度数学,分数中的分子在上,分母在下,与中国同,分数的乘除法也和《九章算术》相同。古印度数学绝大部分来自中国。[2]。一直到被珠算完全取代之前,筹算是東亞古代进行日常计算的方法,算筹是東亞古代数学家研究数学时常用的计算器具,是東亞古代各种重要数学发明的基础,开创了中国以至東亞古代以计算为中心的机械化数学体系,与古希腊以逻辑推理为中心的数学体系有所不同;机械化的数学体系是一千多年世界数学的主流[3]

影響

编辑

筹算的乘除法传入印度,成为土盘算法[4]。9世纪初至10世纪,又经印度传入阿拉伯,这时期的阿拉伯阐述印度数学的数学著作,诸如《印度算术原理》,其土盘算式虽然用阿拉伯数字表示,但其十进位制概念,分数的表示法,以及加、减、乘、除四则运算的计算方法,和中国的筹算雷同,有的还用空��“0”表示“0”,和筹算一模一样。有学者认为,中国古代的筹算,通过丝绸之路传入印度阿拉伯,促成印度-阿拉伯数字体系[5]

数字表示

编辑
 
一到九的直型態與橫型態對照

算筹数系是世界上唯一只用一个符号的方向和位置的组合,表示任何十进位数字或分数的系统。 单位数字:将筹棍竖排一根棍表示1,两根棍表示2,5根棍表示5如图上。但从6至9数字的表示,不是並排6至9根筹棍,而是采用同位五进制,即用一根筹棍代表数码5,横放在筹数1至4的上方如图。这已蕴含算盘雏形。上排是筹算中1至9的竖码,下排是相應數字的横码。

 
使用直橫排列避免混淆

大于9的数字,则用十进制表示,在个位数的位置左边,放置一个筹数,代表这个筹数的十倍,在十位数值左的位置,代表百位数,如此类推。如图所示数二百三十一(231)的表示法,在个位放置一根筹码,表示1,在十位放置筹数3,代表30,在百位放置筹数2,代表200,总数即二百三十一(231)。《孙子算经》云:

凡算之法:先識其位,一從十橫,百立千僵,千十相望,萬百相當。

筹算板一般是桌面或地面,通常没有格子。如果筹码2,3,1并排排列,有可能被误读为51或24;为了避免邻位误读,每隔一位交替使用竖码横码,即个位竖码,十位用横码,百位用竖码,千位用横码,如此类推,就可以完全避免误读了[6]

零的表示

编辑
 
數字後加斜棍表負數

中国自有筹算起就有“0”,即以空位表示“0”。筹算中的零是位置零和运算结果的零,没有特定符号,这和阿拉伯数字专有一个符号0不同,阿拉伯数字0只是符号零,不是运算结果。[來源請求]

正负数

编辑

宋代数学家用红色筹码代表正数,用黑色筹码代表负数,也有一律用黑色筹码,但在數字最後一位加一根斜棍標示為负数。[7]

小数

编辑

孙子算经的度量衡已有十进位制概念,如尺、寸、分、厘、毫、丝、忽。七丈一尺二寸三分四厘五毫六絲,用现代表示方法为71.23456尺,用算筹排为

       

其中 为十位数, 为个位数, 为十分之一位等等。

南宋秦九韶在《数书九章》中将小数推广到非度量衡,如

1.1446154日

表示为:

        

即在个位数1下记一“日”字。[8]

加法

编辑
 
筹算加法  

算筹本身已经包含加法,因此用算筹进行加法运算十分方便快捷。筹算加法与阿拉伯数字加法最大的不同,在于算筹本身具有可加性,用算筹进行加法运算,只须机械地搬动筹棍,即可进行运算,不需要另外背诵加法表,这与阿拉伯数字不同,不可能将阿拉伯数字1和2机械地叠成3字,2和3叠成一个5字。

左图表示 的运筹步骤:

  1. 将被加数3748放上行,加数289放下行,位数对齐。
  2. 从左往右计算。
  3. 取出下行百位数的二竖棍,与上行7合并为9。
  4. 从上行十位的4,取出二根筹棍(上行剩2),与下行8合为10,进位1,与百位的9合为10,进一位。
  5. 将个位数的8,取出一根筹与下行9合为10,进位1,与十位的2合为3
  6. 答案4037。

上行被加数筹码,在运算过程中逐步变化;下行加数筹码,在运算过程中逐步消失。

减法

编辑
 

不需向上一數量級借位的情況下,只要从被减数中去掉与减数相同数目的筹棍,剩余的筹码就是答案。左圖為計算54-23的演示步驟。 右圖為計算4231-789的演示步驟,此情況即為需要向上一數量級借位:

  1. 将被减数4231放在上行,减数789放下行。从左往右逐位运筹。
  2. 从千位借1为百位10,减去下行该位的7,余数3与上行2合为5,下行本位的7被取去,留空白。
  3. 从百位5借1留4,百位所借1减十位下行8得2,与上行3合为5;至此上行筹码为3451,下行为9。
  4. 从上行十位的5借1余四,所借1(=10)减去下行9得1,搬往上行得2,至此下行筹码已全部减除,上行得3442即是运算结果。

乘法

编辑
 
筹算 38x76=2888
 
十世纪阿拉伯数学家阿尔乌基里德的乘法,是孙子乘法的变化

运用算筹进行乘除运算时必须先学会九九表:《夏侯阳算经》云:

夫乘除之法,先明九九,一丛十横,百立千僵,千十相望,万百相当。满六已上,五在上方。六不积算,五不单张。上下相乘,实居中央。言十自当。已法除之,宜得上商,横算相当。以次右行,极于左方。

孙子算经》对筹算乘法有详细阐述。 左圖即為筹算38×76的演示步驟:

  1. 将被乘数放在上排(上位),乘数放在下排(下位),乘数的个位,对齐被乘数的最高位。如图:被乘数38在上排,乘数76在下排,其个位数6对齐被乘数38的3。上下排之间,留空几排,作中间积存放处。
  2. 运算规则:从左至右。
  3. 从被乘数的最高位开始运筹(例中即先運算30×76,再運算8×76)。在运算中必须运用九九表。据九九表「三七二十一」,将筹码21放在中间排,1对齐乘数的十位,即在7之上;然後「三六一十八」;(30×76得中间积2280),如图中排,至此被乘数的3已经完成运算,从筹板除去。
  4. 将乘数76的筹码,往右移动一位,7改横码,6改为竖码;
  5. 以下再運算8×76,運算「七八五十六」,撤乘数十位数筹码7;
  6. 運算「八六四十八」,4与上一步所得56的6合并为10,进位1,撤去被乘数个位8,撤去乘数个位6;
  7. 将中间积2280与608相加,得积2888,至此整條算式运算完毕。

P.S.:範例圖片是一邊乘一邊加而不是像文字描述所說乘完後才加。

除法

编辑
 
十世纪阿尔乌几里德除法
 
孙子除法 309/7=44 1/7
 
9世纪花拉子米除法是孙子除法的翻版
 
十一世纪伊本·拉班除法也是孙子除法的翻版

左圖為計算 的演示步驟:

  1. 将被除数309放中排,除数7放下排,上排留空。
  2. 将除数7右移一位,变横码,用九九表和减法运算30÷7:30除7得4剩2,
  3. 商4摆上排,2留中排。
  4. 将除数7右移一位,改竖码;再用九九表和减法运算29÷7:29除7得4余1,
  5. 商4放上排,除数不撤,最后得商44,余数1,故 

孙子除法在9世纪初最早由花拉子米从印度介绍到阿拉伯国家,十世纪阿拉伯数学家阿尔乌几里德《印度的算术》[9]叙述的早期除法和十一世纪波斯数学家伊本·拉班印度算术原理》叙述的除法,也是不折不扣的孙子除法:

  1. 同样上、中、下三行的布列格式
  2. 同样上为商数,中为被除数,下为除数
  3. 同样的左边对齐
  4. 同样的自左往右运算
  5. 同样算一步后将除数右移一位
  6. 同样除数后面以空格代0
  7. 同样的商和余数,以三行格式表示。

分数

编辑

用筹算进行除法运算时,如留有余数,则必须保留除数和余数,形成一对筹码,一在上一在下。刘徽九章算术注》中,在上的筹称“实”,为在下的筹称为“法”:《孙子算经》中,在上的筹称为“子”,(分子),而在下的称为“母”(分母)。如右图一对筹码一在上一在下,1是子,7是母,构成分数  。 这种筹算分数的表示法,在9世纪由花拉子米介绍到阿拉伯国家。

分数加法

编辑
 
分数加法

 

  • 将分子1,2 摆放在算筹板的左边,将分母3,5摆放在算筹板的右边
  • 将分子与分母交叉互乘,将所得的积代替相应的分子
  • 将分母相乘,将乘积摆放在算筹板右下方
  • 将新的分子相加,其和摆放在算筹板右上方
  • 结果: = 

分数减法

编辑
 
分数减法

 

  • 将分子8,1的算筹摆放在算筹板的左边
  • 将分母9,5 摆放在算筹板的右边
  • 分子分母互乘,以乘积代替相应的分子。
  • 分母相乘,其积摆放在算筹板右下方
  • 新分子相减为差,将差数摆放在算筹板右上方
  • 结果:   =  

分数乘法

编辑
 
分数乘法

 

  •   在算筹板上布置成商、实、法形式。
  • 商乘法加入实。 3*3 + 1=10; 5*5 + 2=27
  • 实乘实:10*27=270
  • 法乘法:3*5=15
  • 实除法: =18

此算法的实质是将带分数先化成假分数,再行乘法。

分数除法

编辑
  • 将分数在算筹板上以商、实、法的三行格式排列。
  • 将商乘法,并入实。
  • 将除数分数的分子、分母互换。
  • 分子、分母相乘。
  • 约分。

此算法的实质是将带分数先化成假分数,并将除数取倒数相乘。

最大公约数

编辑
 
求最大公约数

九章算术给出求两个数最大公约数的方法,即辗转相除,以至最后余数相等,即为最大公约数。

左图为求   的最大公约数,并进行约分。

最大公约数为25,约分得 

分数内插法

编辑
 

何承天发明名为调日法的分数内插法,反复将弱值分数与强值分数的分子分母相加已求得更佳的近似值。祖冲之用此法求的著名的圆周率 约率 和密率 

开平方根

编辑
 
筹算开方术
 
伊本·拉班开平方术

孙子算经卷中:“今有積,二十三萬四千五百六十七步。問:為方幾何?答曰:四百八十四步九百六十八分步之三百一十一。

術曰:置積二十三萬四千五百六十七步,為實,次借一算為下法,步之超一位至百而止。上商置四百于實之上,副置四萬于實之下。下法之商,名為方法;命上商四百除實,除訖,倍方法,方法一退,下法再退,復置上商八十以次前商,副置八百于方法之下。下法之上,名為廉法;方廉各命上商八十以除實,除訖,倍廉法,從方法,方法一退,下法再退,復置上商四以次前,副置四于方法之下。下法之上,名曰隅法;方廉隅各命上商四以除實,除訖,倍隅法,從方法,上商得四百八十四,下法得九百六十八,不盡三百一十一,是為方四百八十四步九百六十八分步之三百一十一”。

右图为筹算开方  

算法如下:

  • 把234567放在算籌板的由上數起的第二行上,稱之為
  • 把一個標記“1”放置在第四行的萬位,稱為下法
  • 估計平方根的第一位,放在第一行()的百位。
  • 將商乘以下法(4×1),把積放在第三行,稱之為方法
  • 將實減去商和方法的積,23-4×4=7
  • 將方法乘以2,把它移向右邊,改為橫碼。
  • 把下法向右移兩位。
  • 估計平方根的第二位,放在商的十位。
  • 將商乘以下法,積加到方法。
  • 8(方)×8(商的十位)=64,將74減去64,把10放到實,再將105減去8(廉)×8(商的十位)=64,再把41放回實。
  • 把方法的個位(廉)乘以2,加到原方法80。
  • 把方法向右移,改變方向;把下法向右移兩位。
  • 估計平方根的第三位。
  • 將商乘以下法(4×1),積加到方法,此時方法應為964。
  • 從實減去4×900+4×60+4×4=76,餘下311。
  • 把方法的個位乘以2,加到原方法960。
  • 答案: 

十一世纪波斯数学家伊本·拉班的开平方术,与孙子基本上相同,唯最后分母加1,所以平方根的小数比真值略小,孙子算法所得,则比真值略大。

开立方根

编辑
 
贾宪增乘开立方术

九章算术卷第四《少广》有数道开立方题,其开立方术为后世开立方术的基础。

〔二二〕又有積一百九十三萬七千五百四十一尺、二十七分尺之一十七。問為立方幾何?

答曰:一百二十四尺、太半尺。 開立方術曰:置積為實。借一算步之,超二等。議所得,以再乘所借一算為法,而除之。除已,三之為定法。復除,折而下。以三乘所得數置中行。復借一算置下行。步之,中超一,下超二等。復置議,以一乘中,再乘下,皆副以加定法。以定法除。除已,倍下、并中從定法。復除,折下如前。開之不盡者,亦為不可開。若積有分者,通分內子為定實。定實乃開之,訖,開其母以報除。若母不可開者,又以母再乘定實,乃開之。訖,令如母而一。

 

北宋数学家贾宪发明增乘开立方法递增三乘开四次方术

右图为贾宪增乘开立方解九章算术第四卷少广〔一九〕

今有積一百八十六萬八百六十七尺。問為立方幾何?

答曰:一百二十三尺。

 

联立方程

编辑
 
联立方程

九章算術 卷第八 方程: 〔一〕今有上禾三秉,中禾二秉,下禾一秉,實三十九斗;上禾二秉,中禾三秉,下禾一秉,實三十四斗;上禾一秉,中禾二秉,下禾三秉,實二十六斗。 問上、中、下禾實一秉各幾何?

答曰:

上禾一秉,九斗、四分斗之一,

中禾一秉,四斗、四分斗之一,

下禾一秉,二斗、四分斗之三。

有三捆上等穀物,兩捆中等穀物,一捆下等穀物,共39斗;有兩捆上等,三捆中等,一捆下等,共34斗;有一捆上等,兩捆中等,三捆下等,共26斗。分別找出上、中、下等穀物的數量。

方程術曰,置上禾三秉,中禾二秉,下禾一秉,實三十九斗,於右方。中、左禾列如右方。

质量 右行 中行 下行
上禾      
中禾      
下禾      
           

以右行上禾遍乘中行而以直除。又乘其次,亦以直除。然以中行中禾不盡者遍乘左行而以直除。左方下禾不盡者,上為法,下為實。實即下禾之實。求中禾,以法乘中行下實,而除下禾之實。餘如中禾秉數而一,即中禾之實。求上禾亦以法乘右行下實,而除下禾、中禾之實。餘如上禾秉數而一,即上禾之實。實皆如法,各得一斗。

  • 將中列乘以右上角的數字,即3。
  • 重複地從中列減去右列,直到中上角的數字為0。
  • 將左列乘以右上角的數字,即3。
  • 重複地從左列減去右列,直到左上角的數字為0。
  • 對中列和左列使用上述消除算法後,矩陣將簡化成三角形狀:
质量 右行 中行 下行
上禾  
中禾    
下禾       
           

一捆下等穀物的數量= 

一捆上等穀物= 

一捆中等穀物= 

行列式

编辑

日本数学家关孝和在《三部抄》的《解伏题之法》中,將线性方程组的係數縱橫寫成方陣的形式,发明了行列式。關孝和還提出了兩種計算行列式的值的方法:逐式交乘法和交式斜乘法。

高次方程

编辑
 

南宋数学家秦九韶贾宪增乘开方术推广,以求解高次方程。右图为秦九韶解下列四次方程式的程序。

 

程序:

  1. 置6262506.25 为实
  2. 置15245 为上廉
  3. 置1为益隅
  4. 上廉超二位,益隅超三位。
  5. 置商20步
  6. 以商乘益隅入下廉
  7. 以下廉乘商生负廉
  8. 以负廉与正廉相消得正上廉
  9. 以商乘上廉为方
  10. 以方乘商除实
  11. 又以商乘益隅入下廉
  12. 以下廉乘商生负廉
  13. 负廉与正廉相消
  14. 商与上廉生方
  15. 商隅相乘入下廉
  16. 商与下廉生负廉
  17. 负廉与正廉相消
  18. 商又与隅生下廉
  19. 下廉三退,隅四退
  20. 无商(商第二位为0),以上廉并入方,并益隅入下廉
  21. 益隅并负廉与正方廉相消,命为母
  22. 约分

 

四元高次方程

编辑

筹算的应用在朱世杰《四元玉鉴》中的四元术到达高峰。

三元术

今有股弦较除弦和与直积等。只云勾股较除弦较和与勾同。问弦几何?

答曰:五步。
术曰:立天元一为勾,地元一为股,人元一为弦,物元一为开数。

:得到 今式 

  
 
   


云式: 

   
 
 

三元式: 

    
 
 

三元式与云式相消,

人天易位 人弦-->天勾

得: 前式 

    
   
   

及 后式  

   
    
    

相消得  

 
 
 
 
 

解之得   天勾=5;

人天易位 天勾-->人弦

得弦=五步。

四元术
 
朱世杰《四元玉鉴·四象会元》四元术

今有股乘五较与弦幂加勾乘弦等。只云勾除五和与股幂减勾弦同。问黄方带勾股弦共几何?

答曰:一十四0 步。
草曰:立天元0 一为勾,地元一为股,人元一为弦,物元一为开数。得四元方程[10][11]
1: 0 0  ;
2: 0 0  ;
3: 0 0  ;
4: 0 0  ;


消元,物易天位

 
   
 
 

解之,

物易天位,得 十四步。

参看

编辑

註釋

编辑
  1. ^ 筹算 - 《中国大百科全书》第三版网络版. www.zgbk.com. [2022-10-17]. (原始内容存档于2022-10-17). 
  2. ^ 钱宝琮 《中国古代分数算法的发展》 《李俨.钱宝琮科学史全集》卷9 392页
  3. ^ 吴文俊 《中国古代数学对世界文化的伟大贡献》 《吴文俊文集》 2页
  4. ^ 钱宝琮 《中国古代数学的伟大成就》 《李俨.钱宝琮科学史全集》卷9 383页
  5. ^ 新加坡大学教授蓝丽蓉:《阿拉伯数字体系起源于中国筹算的证据》,Fleeting Footsteps
  6. ^ 李约瑟 原著 柯林‧罗南改编《中华科学文明史》卷2 第一章 数学
  7. ^ Ho Peng Yoke, Li, Qi and Shu p58 ISBN 0-486-41445-0
  8. ^ Lam Lay Yong, p87-88
  9. ^ Abu al-Hasan Ahmad ibn Ibrahim al-Uqlidisi, The Arithematics of Al-Uqlidisi, tran. A.S.Saidan, P57 D.Reidel, Boston, USA 1978
  10. ^ 朱世杰原著 李兆华校正 《四元玉鉴》 153页 ISBN 978-7-03-020112-6
  11. ^ 《李儼钱宝琮科学史全集》 第一卷 李儼 《中国算学史》 第435-439页

参考文献

编辑