数学课上,老师在黑板上写了一道竖式:23 × 14。
先用 4 去乘 23,得 92,写在第一行。再用 1 去乘 23,得 23,可是老师偏偏不把它和 92 对齐,而是往左挪了一格才写。两行一加,答案是 322。
你可能已经会算了,可是心里也许冒出过两个问题:第二行为什么非要往左挪一格?竖式这个办法,又是谁想出来的?
第二行写的“23”,真的只是 23 吗?如果不往左挪,和 92 对齐着加,答案会是多少?对不对?
一、古人没有作业本,用小棍子摆数
数字站在哪里,比它长什么样还重要
要弄懂竖式,先得弄懂我们写数字的一个小秘密。
看看 222 这个数。三个“2”长得一模一样,可是意思完全不同:最右边的 2 是两个一,中间的 2 是两个十,最左边的 2 是两个一百。一个数字站的位置不同,大小就不同,每往左挪一格,就大 10 倍。数学家把这个叫作位值。
这个办法看起来平常,其实很了不起。古罗马人写 23,要写成 XXIII:两个 X 是两个十,三个 I 是三个一。他们的符号自己就代表大小,和站在哪里没关系,所以没法像我们这样把个位对个位、十位对十位,竖着排好来算。
中国古人的算数小棍:算筹
那中国古人呢?两千多年前,他们算数时会拿出一把小竹棍,在桌上或地上摆。这种小棍叫算筹,汉朝的算筹大约 12 厘米长,比一支铅笔短一点1。
算筹摆数字的规矩是这样的:1 到 5,有几就摆几根;6 到 9,用一根横着(或竖着)的小棍当 5,再添上几根。每个数字都有竖着摆的“纵式”和横着摆的“横式”两种样子。
摆一个多位数时,个位用纵式,十位用横式,百位又用纵式……一竖一横地交替。古书《孙子算经》把这叫作“一纵十横”2。为什么要交替?因为挨着的两位样子不一样,一眼就能分清哪根是哪一位的,不会混在一起。
那 0 怎么摆呢?古人一开始的办法很简单:那一位空着,什么都不放。
你看,算筹也是“站的位置决定大小”。所以说,中国人很早就在用位值了1。
有了能排整齐的数,古人又是怎么算乘法的呢?
二、两千多年前,就有乘法口诀和“乘法表”
秦朝的九九表
算乘法,先要背口诀。你背的九九乘法表,其实非常古老。
2002 年,考古学家在湖南龙山县的里耶古城,从一口古井里挖出了三万多枚秦朝的简牍。其中有一块木板上,整整齐齐地写着乘法口诀:“九九八十一,八九七十二,七九六十三……”,和我们今天背的几乎一模一样3。它大约写于 2200 年前。
秦朝的九九表最后还有一句“二半而一”,意思是两个“一半”合起来是一。原来两千多年前的人,已经在算分数了。
大乘法拆成小乘法
可是口诀只管到 9 × 9。要算 23 × 14 这样的两位数乘法,怎么办?
清华大学收藏了一批战国时候的竹简,比秦朝还要早一些。其中 21 支竹简拼起来,是一张《算表》。用它算两位数乘法,办法是把两个数都拆开:23 拆成 20 和 3,14 拆成 10 和 4,两两相乘,得到四个小一点的数,最后再加起来4。
把 23 × 14 画成一个长方形,就能看清楚这是怎么回事:长 23 格,宽 14 格,一共 322 个小格。沿着 20 和 3、10 和 4 切开,正好变成四块。
“拆开、分别乘、再加起来”,这就是乘法竖式的核心秘密。记住这个长方形,后面还要用到它。
不过,竹简上的《算表》和小竹棍都没法写在纸上留下来。我们今天在作业本上写的 0、1、2、3……又是从哪里来的?
三、0 到 9 这十个数字的长途旅行
我们写的 0 到 9,叫“阿拉伯数字”。可它们其实出生在印度。
大约 1400 年前,印度的数学家已经把 0 当成一个真正的数来用了。有了 0,再加上 1 到 9,只用这十个符号,就能写出任何一个数:算筹要“空一格”的地方,现在可以清清楚楚写一个 0。
后来,这套数字传到了阿拉伯地区。大约 1200 年前,一位叫花拉子米的学者专门写书,教大家用印度数字计算。又过了几百年,一位叫斐波那契的意大利人在 1202 年写了一本《计算之书》,把它们介绍给欧洲的商人5。欧洲人是从阿拉伯人那里学来的,就把它们叫成了“阿拉伯数字”。
在中国,人们很早就会用算筹和算盘算数,写数字用的是一、二、三这样的汉字。一直到一百多年前,数学书里才开始用阿拉伯数字做计算6。
有了能写在纸上的数字,人们是怎么在纸上算乘法的?
四、明朝人画格子算乘法:铺地锦
在竖式流行以前,有一种画格子的乘法很受欢迎。明朝 1450 年,一位叫吴敬的人在书里写过这种方法7;后来程大位的《算法统宗》里也有它,名字很好听,叫铺地锦8,像在地上铺开一块织锦。差不多同一个时候,意大利的算术书里也有一模一样的格子7。
我们用铺地锦来算 23 × 14:
- 画一个两格乘两格的方格,上面写 2 和 3,右边写 1 和 4。
- 每个格子画一条斜线,把一个小乘法的结果写进去:十位写在左上,个位写在右下。比如 3 × 4 = 12,就写 1 和 2。
- 顺着斜线隔出来的一条条“斜带”,把同一条带里的数加起来。满十就往左边那条带进 1。
- 沿着左边和下边读出来。
铺地锦的好处是:每个格子只管一个小乘法,用口诀就能算,最后才一起相加。这和战国《算表》的“拆开、分别乘、再加起来”,是同一个道理。
可是铺地锦要先画格子,有点麻烦。有没有不用画格子,也能把数排整齐的办法?
五、今天的竖式:第二行为什么往左挪一格
把 14 拆成 10 和 4
有,那就是我们今天的竖式。它是在许多国家的算术书里一点点改进出来的,后来在欧洲流行开。1613 年,明朝的李之藻根据意大利传教士利玛窦讲的内容,编成了《同文算指》,第一次把这种“用笔在纸上算”的方法系统地介绍到中国8。
现在,我们回到开头那道题。竖式其实只拆了一个数:把 14 拆成 10 和 4。
- 第一行:23 × 4 = 92。
- 第二行:23 × 10 = 230。
第二行本来应该写 230。末尾的 0 写不写都一样,大家为了省事就不写了。可是 23 必须留在原来该在的位置上:3 在十位,2 在百位。所以看起来像是往左挪了一格。
如果不挪,把 23 和 92 对齐着加,就得到 115。这等于把 230 当成 23 来加了,少了很多。
竖式就是一张没画出来的格子
把竖式和前面的长方形放在一起看:第一行的 92,是长方形下面那 4 行;第二行的 230,是上面那 10 行。竖式的每一行,就是长方形里的一块。
两千多年前的《算表》、明朝的铺地锦、今天的竖式,用的都是同一个办法:大乘法拆成小乘法,靠“位值”把每一块放到正确的位置上,再加起来。竖式只是把格子“藏”了起来,写得最省事。
六、动手试试:用铺地锦检查竖式作业
你需要: 一张纸、一支铅笔、一把尺子,再加上你的乘法作业。
- 挑一道两位数乘两位数的题,比如 36 × 47,先用竖式算一遍。
- 在纸上画一个两格乘两格的方格,每个格子画一条从右上到左下的斜线。
- 上面写 3 和 6,右边写 4 和 7,把每个小乘法的结果填进格子。
- 顺着斜带加起来,沿左边和下边读出答案。
两种方法的答案一样吗?如果不一样,一定有一边算错了,回头找一找错在哪一格。
用铺地锦检查时,你会发现:竖式第一行的 252,就藏在格子里“× 7”的那一行(21 和 42);第二行的 1440,就藏在“× 4”的那一行(12 和 24)。两种方法算的是同样的四个小乘法,只是摆法不同。
小结
回到开头的问题,我们一路找到了这些答案:
- 为什么数字能竖着对齐来算? 因为我们的数字讲“位值”:站的位置不同,大小就不同,每往左一格大 10 倍。中国古人摆算筹时,就已经这样用了。
- 乘法口诀有多老? 秦朝的木板上就写着九九表,大约有 2200 年了。
- 两位数乘法怎么算? 把大乘法拆成几个小乘法,分别乘,再加起来。战国的《算表》、明朝的铺地锦,都是这个办法。
- 我们写的数字从哪里来? 0 到 9 出生在印度,经过阿拉伯和欧洲,一百多年前才进了中国的课本。
- 第二行为什么往左挪一格? 因为它其实是 23 × 10 = 230,末尾的 0 省掉了,23 还要站在十位和百位上。
你开头的猜想猜对了吗?下次写竖式的时候,可以在第二行末尾用铅笔轻轻点一个小点,提醒自己:这里藏着一个看不见的 0。
参考资料
Footnotes
-
中国古代的数学瑰宝,到底厉害在哪?news.cn ↗讲了算筹、十进位值制,以及算筹用了大约两千年https://www.news.cn/science/20240802/1129bc726ba049c8a92be5b88b7b5abf/c.html ↩ ↩2
-
Counting rodsen.wikipedia.org ↗算筹的纵式、横式,个位纵、十位横交替摆,空位表示 0;《孙子算经》“一纵十横”https://en.wikipedia.org/wiki/Counting_rods ↩
-
里耶秦简:探索中国首个大一统王朝的生活全景news.cn ↗2002 年湖南里耶出土的秦简里有九九乘法表,约 2200 年前https://www.news.cn/local/20240416/02cf3c5ad5564b78b41a702fc9275f76/c.html ↩
-
清华简《算表》为最早十进制计算器tsinghua.edu.cn ↗战国时期的 21 支竹简,能把两位数乘法变成四个数相加https://www.tsinghua.edu.cn/info/1750/71454.htm ↩
-
History of the Hindu–Arabic numeral systemen.wikipedia.org ↗印度的十个数字和 0(628 年婆罗摩笈多)、花拉子米(约 825 年)、斐波那契《计算之书》(1202 年)https://en.wikipedia.org/wiki/History_of_the_Hindu%E2%80%93Arabic_numeral_system ↩
-
阿拉伯数字在中国的传播ccl.pku.edu.cn ↗19 世纪后半叶,数学书开始用阿拉伯数字做计算https://ccl.pku.edu.cn/doubtfire/NumeralUsage/diffusion/diffusion%20of%20arabic%20numbers%20by%20zwd%20lhc.pdf ↩
-
Lattice multiplicationen.wikipedia.org ↗格子乘法的历史:吴敬 1450 年的《九章算法比类大全》、1478 年意大利的《特雷维索算术》https://en.wikipedia.org/wiki/Lattice_multiplication ↩ ↩2
-
Tongwen Suanzhi (同文算指) and transmission of bisuan (筆算 written calculation) in Chinahkumath.hku.hk ↗1613 年的《同文算指》第一次系统地把欧洲的笔算介绍到中国,也提到程大位书里的铺地锦https://hkumath.hku.hk/~mks/MKSiu_TongwenSuanzhiBisuan_HPM_Revised.pdf ↩ ↩2