十进位值制、筹算和珠算

自然科学史研究所 梅荣照

我国古代数学以计算为主,取得了十分辉煌的成就。其中十进位值制记数法、筹算和珠算在数学发展中所起的作用和显示出来的优越性,在世界数学史上也是值得称道的。

十进位值制记数法曾经被马克思(1818—1883)称为“最妙的发明之一”

①。

从有文字记载开始,我国的记数法就遵循十进制。殷代的甲骨文和西周

的钟鼎文都是用一、二、三、四、五、六、七、八、九、十、百、千、万等字的合文来记十万以内的自然数的。例如二千六百五十六写作■■■■(甲骨文),六百五十九写作■■■■■(钟鼎文)。这种记数法含有明显的位值制意义,实际上,只要把“千”、“百”、“十”和“又”的字样取消, 便和位值制记数法基本一样了。

春秋战国时期是我国从奴隶制转变到封建制的时期,生产的迅速发展和科学技术的进步提出了大量比较复杂的数字计算问题。为了适应这种需要, 劳动人民创造了一种十分重要的计算方法——筹算。我们认为筹算是完成于春秋战国时期,理由是:第一,春秋战国时期,农业、商业和天文历法方面有了飞跃的发展,在这些领域中,出现了大量比以前复杂得多的计算问题。由于井田制的废除,各种形状的私田相继出现,并相应实行按亩收税的制度,这就需要计算复杂形状的土地面积和产量;商业贸易的增加和货币的广泛使用,提出了大量比例换算的问题;适应当时农业需要的厉法,要计算多位数的乘法和除法。为了解决这些复杂的计算问题,才创造出计算工具算筹和计算方法筹算。第二,现有的文献和文物也证明筹算出现在春秋战国时期。例如“算”和“筹”二字出现在春秋战国时期的著作(如《仪礼》、《孙子》、《老子》、《法经》、《管子》、《荀子》等)中,甲骨文和钟鼎文中到现在仍没有见到这两个字。一二三以外的筹算数字最早出现在战国时期的货币(刀、布)上。《老子》提到:“善计者不用筹策”,可见这时筹算已经比较普遍了。因此我们说筹算是完成于春秋战国时期。这并不否认在春秋战国时期以前就有简单的算筹记数和简单的四则运算。

关于算筹形状和大小,最早见于《汉书·律历志》。根据记载,算筹是直径一分(合○·二三厘米)、长六寸(合一三·八六厘米)的圆形竹棍, 以二百七十一根为一“握”。南北朝时期公元六世纪《数术记遗》和《隋书·律历志》记载的算筹,长度缩短,并且把圆的改成方的或扁的。这种改变是容易理解的:长度缩短是为了缩小布算所占的面积,以适应更加复杂的计算;

① 马克思:《数学手稿》,人民出版社 1975 年版,第 205 页。

圆的改成方的或扁的是为了避免圆形算筹容易滚动而造成错误。根据文献的记载,算筹除竹筹外,还有木筹、铁筹、玉筹和牙筹,还有盛装算筹的算袋和算子筒。唐代曾经规定,文武官员必须携带算袋。1971 年八月中旬,在陕西宝鸡市千阳县第一次发现西汉宣帝时期(公元前 73 年到前 49 年)的骨制算筹三十多根,大小长短和《汉书·律历志》的记载基本相同。1975 年上半年在湖北江陵凤凰山一六八号汉墓又发现西汉文帝时期(公元前 179 年到前

157 年)的竹制算筹一束,长度比千阳县发现的算筹稍大一点。1980 年九月, 在石家庄市又发现东汉初期(公元一世纪)的骨制算筹约三十根,长度和形状同《隋书·律历志》的记载相近,这说明算筹长度和形状的改变早在东汉初期已经开始。算筹的出土,为研究我国数学发展史提供了可贵的实物资料。

十进位值制、筹算和珠算 - 图1十进位值制、筹算和珠算 - 图2

从而进行加、减、乘、除、开方以及其他的代数计算。

筹算一出现,就严格遵循十进位值制记数法。九以上的数就进一位,同一个数字放在百位就是几百,放在万位就是几万。这种记数法,除所用的数字和现今通用的印度-阿拉伯数字形式不同外,和现在的记数法实质是一样的。筹算是把算筹一面摆成数字,一面进行计算,它的运算程序和现今珠算的运算程序基本相似。记述筹算记数法和运算法则的著作有《孙子算经》(公元四世纪)、《夏侯阳算经》(公元五世纪)和《数术记遗》(公元六世纪)。负数出现后,算筹分成红黑两种,红筹表示正数,黑筹表示负数。算筹还可以表示各种代数式,进行各种代数运算,方法和现今的分离系数法相似。我国古代在数字计算和代数学方面取得的辉煌成就,和筹算有密切的关系。例如祖冲之的圆周率准确到小数第六位,需要计算正一万二千二百八十八边形的边长,把一个九位数进行二十二次开平方(加、减、乘、除步骤除外), 如果没有十进位值制的计算方法,那就会困难得多了。

古巴比仑的记数法虽然有位值制的意义,但是它是六十进的,计算比较繁琐。古埃及的数字从一到十只有两个数字符号,从一百到一千万有四个数字符号,而且是象形的,例如用一个鸟表示十万。文化比较发达的古希腊, 由于看重几何,轻视计算,记数方法十分落后,用全部希腊字母表示一到一

十进位值制、筹算和珠算 - 图3

民创造的,但是印度在公元三世纪以前使用的记数法是希腊式和罗马式两种,都不是位值制,真正使用十进位值制记数法出现在公元六世纪末。由此可见,我国古代的十进位值制记数法和筹算,在世界数学史上应该占有重要

的地位。

筹算在我国古代用了大约两千年,在生产和科学技术以至人民生活中, 发挥了重大的作用。但是它的缺点也是十分明显的:首先,在室外拿着一大把算筹进行计算就很不方便;其次,计算数字的位数越多,所需要的面积越大,受环境和条件的限制;此外,当计算速度加快的时候,很容易由于算筹摆弄不正而造成错误。随着社会的发展,计算技术要求越来越高,筹算需要改革,这是势在必行的。这个改革从中唐以后的商业实用算术开始,经宋元出现大量的计算歌诀,到元末明初珠算的普遍应用,历时七百多年。《新唐书》和《宋史·艺文志》记载了这个时期出现的大量著作。由于封建统治阶级对民间数学十分轻视,以致这些著作的绝大部分已经失传。从遗留下来的著作中可以看出,筹算的改革是从筹算的简化开始而不是从工具改革开始的,这个改革最后导致珠算的出现。

珠算是由筹算演变而来的,这是十分清楚的。筹算数字中,上面一根筹当五,下面一根筹当一,珠算盘中的上一珠也是当五,下一珠也是当一;由于筹算在乘、除法中出现某位数字等于十或多于十的情形(例如 26532÷8,

十进位值制、筹算和珠算 - 图4

采用上二珠下五珠的形式。其次,我们可以证明,从杨辉、朱世杰开始到元末丁巨、何平子、贾亨止的除“起一”法外的全部现今通用的珠算歌诀,是为筹算而设的。杨辉的《乘除通变本末》(公元 1274 年)和朱世杰的《算

学启蒙》(公元 1299 年)已经有相当完备的歌诀,但是杨辉在《乘除通变本末》中说:“下算不出‘横’‘直’”,其中“横”“直”显然是指算筹的纵横排列;朱世杰在《算学启蒙》中提到“知算纵横数目真”,也是这个意思。《丁巨算法》(公元 1355 年)、何平子的《详明算法》(公元 1373

年)、贾亨的《算法全能》(约公元 1373 年)也有相当完备的归除歌诀, 但是都没有提到珠算,而《详明算法》还有许多筹算算草。歌诀出现后,筹算原来存在的缺点就更突出了,歌诀的快捷和摆弄算筹的迟缓存在矛盾。为了得心应手,劳动人民便创造出更加先进的计算工具——珠算盘。

现存文献中最早提到珠算盘的是明初的《对相四言》。明代中期公元十五世纪中叶《鲁班木经》中有制造珠算盘的规格:“算盘式:一尺二寸长, 四寸二分大。框六分厚,九分大,⋯⋯线上二子,一寸一分;线下五子,三寸一分。长短大小,看子而做。”把上二子和下五子隔开的不是木制的横梁, 而是一条线。比较详细地说明珠算用法的现存著作有徐心鲁的《盘珠算法》

(公元 1573 年)、柯尚 迁的《数学通轨》(公元 1578 年)、朱载堉(1536

—1611)的《算学新说》(公元 1584 年)、程大位的《直指算法统宗》(公

元 1592 年)等,以程大位的著作流传最广。

值得指出的是,在元代中叶和元末的文学、戏剧作品中有提到珠算的。例如元世祖至元十六年(公元 1279 年)刘因在他的《静修先生文集》中有一首关于算盘的五言绝诗;陶宗仪在他的《辍耕录》中把婢仆贬作算盘珠,

要拨才动;《元曲选》“庞居士误放来生债”提到“去那算盘里拨了我的岁数”,等等。文学、戏剧中用算盘珠作比喻,说明珠算盘已经比较流行,也说明它是比较时新的东西。因此可以认为,珠算出现在元代中叶,元末明初已经普遍应用了。

有的外国学者认为我国的珠算出现在汉代,他们的根据是汉徐岳著、北周甄鸾注的《数术记遗》已经明确提到珠算。我国数学家、数学史家钱宝琮

(1892—1974)曾经考证过,《数术记遗》是甄鸾依托伪造而自己注释的书。在北周时,乘、除运算都在上、中、下三层进行,又没有简化乘、除法的歌诀,因此甄鸾注释的珠算,充其量不过是一种记数工具或者只能作加减法的简单算盘,和后来出现的珠算是完全不同的。

珠算还传到朝鲜、日本等国,对这些国家的计算技术的发展曾经起过一定的作用。日本人在十七世纪中叶,在中国算盘的基础上,改成梁上一珠、珠作棱形的日本算盘。