中国独特的计算工具

——筹算和珠算

根据马来西亚的报纸报道,现在的马来西亚政府在全国的小学数学教育,采用中国的算盘为计算工具。

在美国也有一些小学,利用中国的算盘来计算,而不是用计算器。

我想在这里介绍一下中国人在发明算盘之前是用什么计算工具,以及算盘产生的经过。

中国在三百多万年前已有古人类活动,在云南的元谋,人们找到距今一百七十万年前的人类化石,陕西出现八十万年前的蓝田人以及广东马坝人、湖北长阳人、广西柳江人、北京山顶洞人等旧石器时代的古人类。

大约在一万年前,我们的祖先进入新石器时代,人们过着群聚、渔猎的生活,懂得磨出石器及制造陶器。随着以后生活及生产的需要,人们开始要计数。最初我想人们是以他们的手指作为计算工具,这是“屈指可数”这个成语的来源。

后来人们用石子、贝壳等自然实物来协助计算。在中国古书《易经》的《系辞》里记载:“上古结绳而治,后世圣人,易之以书契。”在四千多年前的甲骨文,有一个“数”字,左边形如一根绳上打了许多结,上下有被栓在主绳上的细绳,而右边是一只右手,这表示古人是用结绳来计数(见图一)。

我们没有实物可以证明中国人结绳,可是从古代秘鲁人的遗物(图二、图三)我们是看到这样的例子。

可能结绳还不是太方便计算。在黄河、长江流域生活的祖先,利用盛产的竹子制成竹签,称为筹码,摆成不同的形式来表示数字。

我们现在的“算”这个字,在古代是写成下面形状:

这是很形象的表示用手摆弄算筹的象形。这个字形在公元前三世纪已出现。

在石头、泥坯、树木上进行刻痕划线来表达与计算数字,应该是许多民族进化过程的一种生活活动。在西安半坡等遗址出土的六千年前的彩陶钵口沿上有一些刻划的符号和后来在甲骨文、金文出现的“|”、“‖”、“|||”、“||||”、“十”等数字符号相似。陶文中还有这样的符号(图五),可能是表示较大的数字。

在台湾的少数民族排湾族,以及在云南的一些少数民族在五十多年前还在木棒上刻线表示他们狩猎到野猪的数目。

筹的起源

有许多外国人以为中国古代的人是用算盘来作计数工具。事实上,在几千年前中国人为了生活的需要利用一种独特的计算工具——算筹。

筹是一些小竹、木棍。从西周直到宋元,有两千多年的时间,人们都是以筹来作计算工具。筹也有以骨、玉、铁等材料制成。

1954年考古学家在湖南省长沙左家公山发现一座距今二千一百多年前战国晚期的楚墓,里面有一个竹筒,装有天平、法码、毛笔,以及四十根长短约12厘米的竹筹,这是最早发现也是最古的算筹实物。

到了1978年在河南省登封出土的早期战国陶器,在上面刻有算筹记数的陶文。因此可以把使用算筹的时间推上更远。

远在人们从渔猎时代过渡到畜牧时代,为了计算他们的羊群或马群。人们用小石块或木枝来和所畜养的动物建立一个一一对应的关系,这样方便及较准确的计算。可是有时搬迁的地方,没有太多石块,或者携带石块来计算太过笨重。于是人们想到为什么不用到处可见的竹子为材料制造帮助计算的工具。

在五千多年前古代黄河流域一带,气候比现在温暖湿润,竹子丛生,是大象、犀牛出没的地方。我们的祖先已会充分利用竹子建住房、作竹筏、制箭、吃竹笋、用筷子夹烤熟的肉免烫手,当然会想到削竹片来作为计算的辅助工具。

由于竹容易腐烂,不易保存几千年,因此我们看不到在殷墟出土有算筹的实物。可是那里留下来的二十多万片龟甲兽骨上的文字,就有明显的数字遗迹显示距现在三千三百多年前的商代,人们已用算筹了。

在甲骨文上的“一”、“二”、“三”、“四”、“五”、“六”和“十”是形如“一”“=”“≡”“ ”“ ”“X”和“∧”、“|”的样子。

如果用|||||||||||||||来表12345,那么很自然我们会想到用6根竹棒表示6了,可是这样很不方便,在公元前六到公元前三世纪的周人就用 表示6。而7就用 来表示。8就用 来表示,而9就是以 来表示。

到了秦汉时期基本上就把数码定为横式及纵式两种,而且固定个位、百位、万位是用纵式,而十位,千位是用横式:

大约在公元三世纪出现的《孙子算经》中说:“凡算之法,先识其位。一纵十横(个位纵划,十位横划),百立千僵(百位纵的,千位横的),千十相望(千位和十位相同),万百相当(万位和百位相同)。”(见图六)

筹算加减法

筹算加减的方法比较简单。把加数和被加数摆上两行,然后由高位数算起,即由左向右计算,变成一行就是答案。这方法和我们现在通行的笔算恰好相反。现代的笔算法是由低位数往高位数计算。古代西方和中国人一样是由左而右计算的,到了12-13世纪以后才转变成我们现在的方法。

我们举下面的例子说明进行筹算时的过程:

我们要算43792+3056

 

减法的计算刚好是前面的逆转。比如我们要算

46848-3056

首先列出46848,然后由千位中减去3,依次再减去百位、十位和个位的数码,也是由左向右计算的。读者可在计算过程试试发现。

3世纪末的《孙子算经》是一部算术启蒙书,里面有讲乘法,可是现在的中学生要看懂一千六百多年前的文字,并理解它的意义是不太容易的,故我们加以说明,在下面逐步解释:

1)重置其位,上下相观。(下层的最低位数与上层的最高位数对齐。)

2)以上八呼下八,八八六十四,即下六千四百于中位。

3)以上八呼下一,一八如八,即位下八十。

4)退下位一等,收上头位八十。(下层乘数向右移一位,去掉上属八。)

5)以上位一呼下八,一八如八,即于中位下八十。

6)以上位一呼下位一,一一如一,即于中位下一。

7)上下位俱收,中位即得六千五百六十一。(把上下位数去掉,剩下中位数就是答案6561。)

从这个例子可以看出,把多位数乘多位数变成用单位数去乘多位数,乘一位加一位,基本想法是和现在的笔算是一样。

现在举另外一个例子236×428,为了让习惯看阿拉伯数字的读者能较易理解,我们不写筹式而用阿拉伯数码记数。

消掉(5)中的6,及把下位的数去掉,我们全部乘完,所得的答案就是中位所示。

筹算除法

根据《孙子算经》及《夏侯阳算经》的记载,我们知道除法的过程像是乘法的逆运算。这个除法和我们现在所用的笔算是一致。

其法则如下:“凡除之法,与乘正异,乘得在中央,除得在上方,假令六为法,百为实。以六除百,当进之二等,令在正百下,以六除一,则法多而实少,不可除,故当退就十位。以法除实言一六而折百为四十,故可除。若实多而法少,自当百之,不当复退,故或步法,十者置于十位,百者置于百位,除法皆如乘时,实有余者,以法命之,以法为母,实除为子。”

现在举例子说明,计算2761÷56

2)因被除数首二位27小于除数56,不够除。把除数向右移一位。

3)将初商4置于被除数之上,以4乘除数各位,并从被除数中减去。

4)把除数再向右移一位,议得次商9后,得余数17。由上可见筹算除法是随乘随减,一气呵成。

我们的祖先还可以用筹算开平方及开立方,过程较复杂,这里就不介绍了。

用筹表示负数

魏晋数学家刘徽在注《九章算术》里写道:“正算赤,负算黑,否则以邪正为异。”

如果万一黑色的算筹不够,那么怎办呢?人们就用斜放的算筹表示负数,正放的算筹表示正数,就像刘徽注所说的“以邪(通‘斜’字)正为异。”

北宋著名的科学家沈括(1031—1095)晚年写的《梦溪笔谈》,是一部笔记文集,其中三分之一谈论自然科学,记述了北宋时期各方面的数学成果。在该书的卷八就写道:“算法用赤筹、黑筹,以别正负之数。”可见在北宋时,这个方法还是千年不变沿续下来。

在西汉时算筹一般是圆形竹棍,把二百七十一枚筹捆成六角形的捆。这在《汉书·律历志》中记载:“其算法用竹,径一分,长六寸,二百七十一枚而成六觚,为一握。”

从汉朝到隋朝(公元581—618年),算筹渐渐改变成短小,而且把圆柱形改成棱柱形,主要原因是为了方便取用。隋代的三棱的算筹表示正数,四棱形的算筹表示负数。束置的方法是把正数的算筹二百六十枚,束成一个六角柱体,每一边六筹,对径十二筹。负数的算筹一百四十四枚,束成方柱体,每边是十二筹。

《隋书·律历志》这么描述:“其算用竹广二分,长三寸,正策三广,积二百一十六枚,成六觚,乾之策也;负策四广,积一百四十枚,成方,坤之策也。觚、方皆径十二,天地之数也。”

筹算的缺点

中国人利用算筹为计算工具,从春秋至到汉、唐、宋、元有二千多年以上。

可是算筹在数字计算方面有一定的缺点:

1)用筹拼排数码,1—9的九个数要用29根筹,平均每个数需用3.2根。这就是说一个数码平均要做3.2个动作,所以速度慢,不利于速算。

2)算筹较长,计算时占地多。汉算筹长13.8厘米,隋筹虽较短,也还长8.85厘米。如果以隋筹的长度来说,在计算多位数加、减、乘、除时,一个数码连同左、右、上、下各个数码间应留的空隙,估计所占的面积要121平方厘米。

计算一道4位乘4位积数是8位的乘算题,按照筹算乘法的方法将算筹分上、中、下三层排列,约占长90厘米、宽40厘米的地位,一张方桌不够做两道这样的乘算题。

宋代马永卿曾在《嬾真子》一书记载:“出算子约百简,布地上,几长丈余。”

筹算不但做乘除法时占位多,做多位数加减法时也是这样。我们现在可以想像距今一千五百年前南朝的祖冲之要计算圆内接正24576边形的边,而得到圆周率π的近似值是在3.14159263.1415927之间,其计算量及他所要用的计算面积的巨大。

难怪算盘出现以后,由于构造简单,价格低廉,计算方便,很快取代筹算。

中国人长期用算筹来作计算的工具,可是随着生产和商业交换活动的发展,筹算逐渐不能适应生活的需要,特别是商贾买卖,需要快速计算。筹算摆放速度慢,占用的面积大,很不方便。因此当珠算盘产生之后,筹算很快就从历史舞台上退出。

珠算的起源

19763月,中国考古工作者在陕西省岐山县的凰雏村发掘出西周王朝早期宫室的遗址,在出土之文物中发现了青黄两色的陶丸九十粒:青色二十粒,黄色七十粒,这些陶丸直径是1.5—2厘米,考古学家认为这是西周时用的算珠。

19533月在山东沂南发掘了汉代古墓,墓室内有一些图像,其中一幅拓片,描绘在基室内有一人跪地上,双手捧着长方板,向其主人作奉敬状态。长方板上有六个直行,有二行内有圆珠,每行八颗(上五下三)。另外在墓室一侧的小几上也有长方板,所绘直行和放置的圆珠个数,与拓片手捧长板是一样。

因此从周朝到汉朝,除了用竹筹以外,人们也利用刻有槽并放圆珠的算板作计算工具。

事实上,古巴比伦人也用类似的计算工具协助计算。

我们的祖先觉得像这样的计算板还是有缺点,因此后来转变成有轴穿珠,便于操作。

“珠算”这个名词,最早见于汉书《数术纪遗》,按书中所述,“珠算控带四时,经纬三才(天、地、人三才)”,里面注释是:“刻板为三分,其上下二分,以停游珠……”故可解释为游珠算盘。

《数术纪遗》中还说:黄帝的臣子隶首定计数的方术多种,除遗忘者外,尚有稽算、太乙、丙仪、三才、五行、八卦、九宫、运算、了知、成数、把头、龟算、珠算、计算等共十四种。(见图七)

《数术纪遗》的著者是徐岳,他是后汉末年人。注释的甄鸾是三国以后北周人。《四库全书》提要中说这本书事实上是甄鸾假托徐岳的名而作,如果这是真的话,我们可以认为中国的游珠算盘在后汉北周时期已经出现。

东汉是因公元220年董卓之乱而结束。三国的纷争是从四百年的太平转为四百年的魏、晋、南北朝大纷乱的开端。

李约瑟教授在他的《中国科学技术史》第三卷,引《北史》八十九卷关于北齐冶金家綦母怀文(公元550—570年)的传记中一段记载,说明在北齐时就有珠算。

“昔在晋阳为监馆,馆中有一蠕蠕客,同馆胡沙门指语怀文云,此人别有异算术,乃指庭中一枣树云,令其布算子,即知其实数。乃试之,并辨若干纯赤,若干赤白相半,于是剥数之,唯少一子。算者曰,必不少,但更撼之,果落一实。”

李约瑟把他译成英文,下面是中译本的译文:

“据说,在晋阳学馆,有一次有一个蠕蠕(匈奴)客人来访,馆中的一个外国僧侣指着綦母怀文对他说:“这个人有奇异的数学才能!”并指着庭院中的一棵枣树,请怀文用算子计算树上有多少枣实。

计算后,怀文不仅说出枣实的总数,并说出其中有多少已熟,多少未熟,多少半熟。

当把枣实计数核对之后,发现只少一个,但这位数学家说:“这是不会错的,请把树再摇一摇!”

这样做了以后,果然它有一个枣实掉了下来。

这故事真是奇妙,把綦母怀文的计算能力说得神乎其技。

人们现在认为汉代已有游珠算盘,晚唐产生了串珠算盘,宋元已经普及使用,晚清勃兴起来后直到现在。

1366年浙江黄岩的陶宗仪所著的《南村辍耕录》中,就有关于珠算盘的明确记载。书中卷29讲到一条俗谚,这条俗谚用“擂盘珠”和“算盘珠”打比喻时指出,“擂盘珠,……不拨自动”,“算盘珠,……拨之则动”。

又在元朝杂剧《元典选》“庞居士误放来生债”一折中有“去那算盘里拨了我的岁数”一句唱词。可见那时珠算盘已是一件比较常见的工具,并反映到作品中去了。

元初画家王振鹏在公元1310年所绘的《乾坤一担图》中,有一个货郎担上有一把算盘,其横梁和档子,穿珠极为清晰,同现代算盘一样。

元末1334年出版了一部世界上最古老的有插图儿童读物《对相四言杂字》,里面就有珠算盘的最早图说。

北宋名画家张择端所绘的《清明上河图》,在卷末有赵太丞家药铺,柜子绘有算盘的图形。可见在北宋时人们已普遍使用算盘当计算工具。

曾经有日本专家认为中国算盘起源自罗马、希腊的沟算盘,中国后汉和罗马有贸易来往,商人把贸易物资与这种算盘传到当时的汉朝。可是中国史学家认为从国外传入的文物,如西汉张骞由西域传入的乐曲、乐器、汉血马、苜蓿、葡萄等等,都有文献记载。传入的文物,还加“胡”字,如胡琴、胡床、胡豆、胡桃等等。汉代以后传入的数学,如唐朝的印度数学,宋、元传入的伊斯兰数学,明清传入的西方数学都有详细的记载。因此“算盘西来说”是不对的。

写出最好珠算书的数学家——程大位

被中算史家严敦杰、梅荣照两位先生称赞为:“明代最杰出的数学家——程大位”,明、清正史中都没有他的传记。

程大位(1533—1606),安徽休宁人,原来从商。壮年后在率口专门从事数学写作,历时三十余年,他用二十年的时间写了《直指算法统宗》简称《算法统宗》,这书很快到处流传和翻刻。他在《算法统宗》出版以后六年写了《算法纂要》。

《算法统宗》流传广泛对明末以及清代民间数学知识的普及和中国古代数学知识的继承有不可忽视的作用。可是在1781年清朝编的《四库全书》对《算法统宗》评价不高,说:“此书专为珠算而作,故世俗通行。惟拙于属文,词多支蔓,未免榛晅勿翦之讥。”

1795年由阮元负责,李锐编纂的一部记述历代天文学家、数学家学术活动及成果的传记体数学史和天文历法史书——《畴人传》,对程大位的工作是这样的贬低:

“大位算学未能深造,故其为术类多舛错,然杂采诸家,往往有宋元以来相传旧法如仙人换影之术,非所能作也。”

这里我们简略介绍他的生平以及工作,希望大家能对他有一个客观的认识:

程大位,字汝思,号宾渠。幼年除了学习数学外,则学儒家的学问,可是在学成以后没有参加当时的科举考试。年纪大了就出外做生意,“周游吴楚之墟”。

他把皖南地区盛产的桐油、茶叶、纸张、砚、墨用车船运出,再换回丝绸、布匹、五金等。他在经商期间,除了收集算书外,也同时收集文字方面的书籍。由于算盘是当时从商者的工具,但是缺少统一的珠算教科书,计算方法往往因人因地而异。程大位每到一地,都要观察同行的计算方法,回到客店或床上就细心琢磨,归纳顺口的口诀。听到那里有好书,就或买或借,“齐心一志,至忘寝食”。程大位在几十年的经商期间,收集了很多数学书籍,以及积累了丰富的数学知识。

后来在写《算法统宗》时,他除了从这些书籍中吸收其精华,同时也保留了许多重要的文献。他在书中开列一个从北宋到明万历年间的数学书目,是研究中国数学史一项重要的参考资料。当时他所知所见的数学著作有51种,其中只有15种流传至今。

他的同乡吴宗儒在《算法统宗》和《算法纂要》的程大位“像赞”中(见图八)称赞他:

“书擅八分,算穷九九,迹隐市衢,心超林薮。”

他晚年退居乡下,用20年的时间写了《算法统宗》。全书共17卷。(见图九)

卷一是数学词汇、度量衡单位以及珠算的基本方法、有整数运算、分数运算、开平方和开立方、定位方法、加法口诀及九归口诀。卷二是整数和份数的基本运算,主要是归除法与留头乘法。卷三至卷十按《九章算术》体例分方田、粟布、衰分,少广、商功、均输、盈肭、方程、勾股十章。其中少广分为两章。卷十三至卷十六仍按《九章算术》的章目,是用诗词体例记述的难题。卷十七是杂诗包括写算、一笔锦、纵横图等。

他的书中问题和解法汇编,所引起的题目很多出自南宋末年的杨辉《详日解九章算法》。书中称为“古题”,但解法是全新的珠算方法。

卷六和卷七把筹算的开带从平方和开带从立方(正系数数字二次方程和三次方程求根)用到珠算中。

  《算法统宗》六卷:

“今有直田积一千七百五十步,长比阔多一十五步,问该长、阔各若干?”

程大位提出两种不同的解法:

[解法1] 设长为a,阔(宽)为b,则

ab=1750a-b=15

根据勾股算术的方法得

4ab+a-b2=a+b2=7225

用“归除开平方”求得a+b=85,所以a=50b=35

[解法2]x=bx+15=a,据题意得

x2+15x=1750

x=b=9a=x+3=12

这部书刊行之后,由于适应了时代的需要,只在短短五六年内,书坊就竞相翻刻。

这本书的初刊本出现后十年,李之藻和意大利传教士利玛窦合作,以《直指算法统宗》和利玛窦的老师,德国数学家克拉维斯的《实用算术概论》为底本,编释出一部名为《同文算指》的书在1613年出版,是一本著名的教科书。

1659年李长茂编的《算海说详》九卷,全部取材于《算法统宗》。

梅文鼎(1633—1721),清初的天文学家和数学家,在他的《方程论》、《勾股誉隅》、《几何通解》等著作也多处引用《算法统宗》。

清代完成的大型类书《古今图书集成》将《直指算法统宗》全文辑入。到了清末,人们对这书的需求量很大,连主要翻译出版西方著作的江南制造局也进行了翻刻。

明末日本丰臣秀吉命令毛利重作来华学习数学时带回《算法统宗》和中国算盘。以后多八种不同的版本流入日本。毛利重作向他的弟子介绍程大位的工作,后来还著《归除滥觞》二卷。在1627年他最得意的弟子吉田光由写了一本《尘劫记》,以程大位的书为蓝本改写而成。随后在日本出现上一珠下五珠的菱珠算盘,一直到今仍在使用。日本珠算普及情况,按人口密度,大大超过中国,对珠算的各个领域都有深广的研究。

程大位的《算法统宗》在1592年出版之后,从明代到清代,各地书商纷纷翻刻,这书流传的广泛和长久,在中国数学史上是罕见的。

明末时,这书传入日本、朝鲜、东南亚各国,对该地区的数学发展有很大的影响。

1716年(康熙五十五年),程大位的曾孙程先坤翻刻他的书,在序中说:“风行宇内,迄今盖已百有数十年,海内握算持筹之士,莫不家藏一编,老业制举者之于四子书、五经义,翕然奉以为宗。”

从清朝一直到民国初年,出现了《算法统宗》的各种翻刻本及改编本,民间还有各种手抄本流传,对民间普及珠算和数学起了重要的作用。