运筹帷幄——我国古代的高超算术

☞ 欢迎来到神奇的01世界 ☜

说到算筹,想必很少有人听闻。虽然史上国外(日本、印度、巴基斯坦等)也有过这块腰椎间盘,但还是要数中国的最突出。

图片来自网络

先感性认识一下

算筹最早出现于商周,在算盘被发明之前,堪称世界上最先进的计算工具。你可能没听说过,但「运筹帷幄」、「觥筹交错」这些朗朗上口的成语皆出于此。而这所谓先进的计算工具,竟是一根根小小的棍子(长约十几厘米)。棍子的材料多样,竹子、木头、象牙、兽骨、金属、玉器应有尽有,凡能削成棍状的东西皆可为之。当然我们现今所能看到的算筹,多是耐腐蚀材质的。

战国骨筹(图片来自http://www.cnr.cn/sxpd/jd/20170720/t20170720_523860563.shtml#3)
战国铜筹(图片来自http://bbs.chcoin.com/show-6865738.html?authorid=190510)
西汉铅筹(图片来自http://blog.sina.com.cn/s/blog_4551bbe8010105vv.html)
西汉牙筹(截图来自《如果国宝会说话 第二季》第20集)

像我们随身携带手机一样,懂数学的古人通常会随身佩戴丝布制成的算袋,里头放着一把算筹。走在路上碰到欠债不还的,一言不合就能掏出来跟他算账……

图片来自网络

传说秦始皇也经常佩带丝质的算袋。一次东游,他把算袋扔进了海里,变化成乌贼,因此乌贼也有算袋鱼之称。

到了唐朝,更有法律规定文武百官必须佩带算袋。可见在彼时,算筹不单单是一种计算工具,更是文化和身份的象征。

算筹示数

史上第一本记述算筹的专著是一千五百年前的《孙子算经》,作者不详(跟孙武孙膑没有半毛钱关系)。

算筹用红棍表示正数,黑棍表示负数,有纵横两种「布棍」模式,纵式用竖棍表示1、横棍表示5,横式反之:

1 2 3 4 5 6 7 8 9
纵式
横式
-1 -2 -3 -4 -5 -6 -7 -8 -9
纵式
横式

0比较特殊,用留空表示。

对于不同的数位,纵式、横式是相间使用的,《孙子算经》如是描述:

凡算之法,先识其位。一纵十横,百立千僵,千十相望,万百相当。

个位上的数字用纵式,十位上的用横式,百位上再用纵式,千位再用横式,以此类推。这样奇怪的做法是考虑到0的存在,比如2018:

2 0 1 8
横式 纵式 横式 纵式

画了表格,才凸显出0的空位。但在实际使用中,尤其在书写(誊抄算法)时,空位很容易被忽略,有了纵横交错的做法,即使没有空位,2和1挨在一起,也不会把2018当成218。

当然这也存在一个问题,比如20018就有被当成218的可能。人们会在「布筹」的计算板上(counting board)划好棋盘一样的表格,或者用围棋子来表示0,以避免这个问题。在书写方面,则引入了圆圈符号——〇。即便如此,纵横交错的形式还是作为经典被始终沿用。

筹算

使用算筹的方法叫筹算,两个字颠倒一下,好比牙刷的使用叫刷牙,不得不感慨中文的博大精深。由于人在阅读时会无意识地忽略文字顺序,所以下文所提「算筹」、「筹算」还请细细分清。

筹算的能力强大,除了最基本的加减乘除,还能进行乘方和开方,纳尼!乘方?开方?!是的,你没有看错,而且远不止这些,筹算甚至能解线性方程(组)、求最大公约数和最小公倍数、解同余式组、造高阶查分表等等,其所用到的负数、小数、分数等较为抽象的数字概念,比西方早出一百年甚至好几百年。

公元480年左右,南北朝数学家祖冲之使用筹算将圆周率精确到小数点后7位(3.1415926~3.1415927之间),这一精度领先世界近千年,直到15世纪初才被打破。这一计算涉及包括开方在内的130次运算,放到今天,如果不用电子计算设备给你一沓草稿纸,恐怕也很难算准。

除了圆周率,著名的秦九韶算法、剩余定理等高超的古代数学成就,都是靠筹算得到的。

其实算筹本身仅仅提供了一种用棍子表示数字的「书写」形式,能做如此复杂的计算,得益于古人一代代智慧积累下来的算法口诀,包括沿用至今的九九乘法表。计算过程和现在的「列竖式」十分相似:

6561 ÷ 9(图片来自维基「Sunzi Suanjing」词条,请无视它为什么不是红色……)

也许你会觉得,筹算虽然强大,但小木棍的摆放好像并不方便。确实需要进行许多机械式的重复步骤,但可谓孰能生巧,厉害的筹算者有着相当可观的计算速度,沈括在《梦溪笔谈》中描述某坏男人淮南人:

运筹如飞,人眼不能逐。

不知是否有夸张的成分,但参考现在娴熟的算盘手,基本也能想象其景。

算筹的不足

筹算虽然强大,然而作为一种质朴的计算工具,终有捉襟见肘的时候。同现今计算机软硬件的相互促进一样,诸多算法为适应筹算模式而生,而算筹本身却渐渐对复杂的算法力不从心——譬如重因法、身外加减法、求一法,听都没听说过,靠一堆小棍棍已经难以应对。加之,筹算时所用算筹数量庞大,表示单个数就可能用到5根,数字越多越繁乱,三国时期魏国人管辂的《管氏地理指蒙》一书甚至以筹喻乱:

形如投算,忧愁紊乱。

而且起初的算筹长约14厘米,摆个6就要占200平方厘米,可以想象,做稍微复杂一点的运算时得放多大一块面积。即使到宋元间改良至1~3寸(3~10cm),面对大计算量的问题依然不好使。宋代马永卿《懒真子》一书就有言:

卜者出算子约百余,布地上,几长丈余。

解道数学题要铺满整个客厅,还得满地爬,不仅是脑力活,更是体力活,搞不好还容易闪着腰啊……

算筹,终被算盘取代。

苏州码子

苏州码子,也叫草码,花码、菁仔码、番仔码、商码,是我国在阿拉伯数字传来之前广泛使用的一种数字形式,是唯一一种现存的书面算筹变种,在港澳街市、旧式餐厅、中药房仍有一点碰到的小概率。

1 2 3 4 5 6 7 8 9

你们见过吗?我是可惜没有见过。

有了这条冷知识,以后出门一定得好好留意,指不定走进哪家餐馆,看到的价目表是酱紫的:

图片来自维基「Suzhou numerals」词条

正当小伙伴们众脸懵逼之时,你一顿潇洒解读,甭提多有面子!

参考文献

禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容