一张方格纸上的乘法竖式,旁边摆着算筹 右边是一张方格纸,上面用竖式算 23 乘 14,第二行的 23 往左挪了一格,答案 322;纸旁边放着一支铅笔和几根古时候算数用的小竹棍。左边写着 23×14:从小竹棍到竖式,两千多年的乘法故事。 3 2 4 1 × 2 9 3 2 2 2 3 23×14 从小竹棍到竖式, 两千多年的乘法 第二行为什么往左挪一格?

数学课上,老师在黑板上写了一道竖式:23 × 14。

先用 4 去乘 23,得 92,写在第一行。再用 1 去乘 23,得 23,可是老师偏偏不把它和 92 对齐,而是往左挪了一格才写。两行一加,答案是 322。

你可能已经会算了,可是心里也许冒出过两个问题:第二行为什么非要往左挪一格?竖式这个办法,又是谁想出来的?

先想一想

第二行写的“23”,真的只是 23 吗?如果不往左挪,和 92 对齐着加,答案会是多少?对不对?

一、古人没有作业本,用小棍子摆数

数字站在哪里,比它长什么样还重要

要弄懂竖式,先得弄懂我们写数字的一个小秘密。

看看 222 这个数。三个“2”长得一模一样,可是意思完全不同:最右边的 2 是两个一,中间的 2 是两个十,最左边的 2 是两个一百。一个数字站的位置不同,大小就不同,每往左挪一格,就大 10 倍。数学家把这个叫作位值。

同一个数字 2,放在不同的位上,大小不一样 三个 2 并排写成 222。个位上的 2 是两个小方块,十位上的 2 是两根十个小方块连成的长条,百位上的 2 是两块一百个小方块拼成的方板。每往左挪一格,就大 10 倍。 同一个 2,站在不同的位置 小方块按真实比例画 百位 2 十位 2 个位 2 × 10 × 10 2 个一百:200 2 个十:20 2 个一:2 往左挪一格,就大 10 倍。这就叫“位值”。
图 1 · 222 里的三个 2:站在个位是 2,站在十位是 20,站在百位是 200

这个办法看起来平常,其实很了不起。古罗马人写 23,要写成 XXIII:两个 X 是两个十,三个 I 是三个一。他们的符号自己就代表大小,和站在哪里没关系,所以没法像我们这样把个位对个位、十位对十位,竖着排好来算。

中国古人的算数小棍:算筹

那中国古人呢?两千多年前,他们算数时会拿出一把小竹棍,在桌上或地上摆。这种小棍叫算筹,汉朝的算筹大约 12 厘米长,比一支铅笔短一点1。

算筹摆数字的规矩是这样的:1 到 5,有几就摆几根;6 到 9,用一根横着(或竖着)的小棍当 5,再添上几根。每个数字都有竖着摆的“纵式”和横着摆的“横式”两种样子。

摆一个多位数时,个位用纵式,十位用横式,百位又用纵式……一竖一横地交替。古书《孙子算经》把这叫作“一纵十横”2。为什么要交替?因为挨着的两位样子不一样,一眼就能分清哪根是哪一位的,不会混在一起。

那 0 怎么摆呢?古人一开始的办法很简单:那一位空着,什么都不放。

算筹怎样摆出数字 左边:用小竹棍摆 1 到 9,纵式是竖着摆,横式是横着摆,6 以上用一根横放或竖放的小棍代表 5。右边:个位用纵式、十位用横式、百位又用纵式,摆出 322;摆 207 时十位空着,空的地方就是 0。 用小棍子摆 1 到 9 摆一个数 示意图 1 2 3 4 5 6 7 8 9 纵式 横式 6 到 9:最上面那一根代表 5 《孙子算经》:一纵十横 百 十 个 322 207 空一格, 就表示这一位是 0
图 2 · 算筹一竖一横交替着摆,空着的那一格就是 0(示意图)

你看,算筹也是“站的位置决定大小”。所以说,中国人很早就在用位值了1。

有了能排整齐的数,古人又是怎么算乘法的呢?

二、两千多年前,就有乘法口诀和“乘法表”

秦朝的九九表

算乘法,先要背口诀。你背的九九乘法表,其实非常古老。

2002 年,考古学家在湖南龙山县的里耶古城,从一口古井里挖出了三万多枚秦朝的简牍。其中有一块木板上,整整齐齐地写着乘法口诀:“九九八十一,八九七十二,七九六十三……”,和我们今天背的几乎一模一样3。它大约写于 2200 年前。

两千多年前秦朝的九九乘法表 右边是一块写满乘法口诀的木板,从右往左竖着写,第一句是九九八十一,接着是八九七十二、七九六十三……左边说明:它在湖南里耶出土,大约 2200 年前;古人从九九八十一背起,今天从一一得一背起。 秦朝的乘法口诀 示意图,字按今天的写法 九 九 八 十 一 八 九 七 十 二 七 九 六 十 三 六 九 五 十 四 五 九 四 十 五 四 九 三 十 六 三 九 二 十 七 二 九 十 八 从“九九八十一”开始背, 所以叫“九九” 写在湖南里耶出土的 一块木板上,约 2200 年前 今天我们从“一一得一”背起, 顺序反过来了,口诀几乎一样
图 3 · 秦朝人的乘法口诀从“九九八十一”背起,和今天的顺序正好相反
小知识

秦朝的九九表最后还有一句“二半而一”,意思是两个“一半”合起来是一。原来两千多年前的人,已经在算分数了。

大乘法拆成小乘法

可是口诀只管到 9 × 9。要算 23 × 14 这样的两位数乘法,怎么办?

清华大学收藏了一批战国时候的竹简,比秦朝还要早一些。其中 21 支竹简拼起来,是一张《算表》。用它算两位数乘法,办法是把两个数都拆开:23 拆成 20 和 3,14 拆成 10 和 4,两两相乘,得到四个小一点的数,最后再加起来4。

把 23 × 14 画成一个长方形,就能看清楚这是怎么回事:长 23 格,宽 14 格,一共 322 个小格。沿着 20 和 3、10 和 4 切开,正好变成四块。

把 23 乘 14 拆成四个小乘法 一个 23 格宽、14 格高的长方形,一共 322 个小格。沿着 20 和 3、10 和 4 切开,变成四块:200、30、80、12,加起来正好是 322。 把 23 × 14 拆成四块 一个小格子代表 1 20 3 10 4 200 30 80 12 20 × 10 = 200 3 × 10 = 30 20 × 4 = 80 3 × 4 = 12 加起来 322 大乘法拆成几个小乘法, 每个都能用口诀算出来
图 4 · 23 × 14 拆成 200、30、80、12 四块,加起来是 322(示意图,一个小格代表 1)

“拆开、分别乘、再加起来”,这就是乘法竖式的核心秘密。记住这个长方形,后面还要用到它。

不过,竹简上的《算表》和小竹棍都没法写在纸上留下来。我们今天在作业本上写的 0、1、2、3……又是从哪里来的?

三、0 到 9 这十个数字的长途旅行

我们写的 0 到 9,叫“阿拉伯数字”。可它们其实出生在印度。

大约 1400 年前,印度的数学家已经把 0 当成一个真正的数来用了。有了 0,再加上 1 到 9,只用这十个符号,就能写出任何一个数:算筹要“空一格”的地方,现在可以清清楚楚写一个 0。

后来,这套数字传到了阿拉伯地区。大约 1200 年前,一位叫花拉子米的学者专门写书,教大家用印度数字计算。又过了几百年,一位叫斐波那契的意大利人在 1202 年写了一本《计算之书》,把它们介绍给欧洲的商人5。欧洲人是从阿拉伯人那里学来的,就把它们叫成了“阿拉伯数字”。

0 到 9 十个数字从印度传到全世界 一条路线从左到右:约 1400 年前在印度有了 0,十个数字能写出所有的数;约 1200 年前阿拉伯学者花拉子米写书介绍印度数字;800 多年前斐波那契把它们带到欧洲;约 150 年前进入中国的数学课本。 0 到 9 这十个数字的旅行 年代是大约 印度 约 1400 年前 有了 0,十个数字 就能写出所有数 阿拉伯 约 1200 年前 花拉子米写书 介绍印度数字 欧洲 800 多年前 斐波那契写书 教商人用新数字 中国 一百多年前 进了数学课本, 后来人人都用 后来人们把它们叫作“阿拉伯数字”,其实它们出生在印度
图 5 · 0 到 9 从印度出发,经过阿拉伯和欧洲,一百多年前进了中国的数学课本

在中国,人们很早就会用算筹和算盘算数,写数字用的是一、二、三这样的汉字。一直到一百多年前,数学书里才开始用阿拉伯数字做计算6。

有了能写在纸上的数字,人们是怎么在纸上算乘法的?

四、明朝人画格子算乘法:铺地锦

在竖式流行以前,有一种画格子的乘法很受欢迎。明朝 1450 年,一位叫吴敬的人在书里写过这种方法7;后来程大位的《算法统宗》里也有它,名字很好听,叫铺地锦8,像在地上铺开一块织锦。差不多同一个时候,意大利的算术书里也有一模一样的格子7。

我们用铺地锦来算 23 × 14:

  1. 画一个两格乘两格的方格,上面写 2 和 3,右边写 1 和 4。
  2. 每个格子画一条斜线,把一个小乘法的结果写进去:十位写在左上,个位写在右下。比如 3 × 4 = 12,就写 1 和 2。
  3. 顺着斜线隔出来的一条条“斜带”,把同一条带里的数加起来。满十就往左边那条带进 1。
  4. 沿着左边和下边读出来。
用铺地锦的方法算 23 乘 14 画一个两格乘两格的方格,上面写 2 和 3,右边写 1 和 4。每个格子用斜线分开,写上小乘法的结果:02、03、08、12。顺着斜带把数加起来,中间一条是 1 加 8 加 3 等于 12,写 2 进 1。最后沿左边和下边读出 0、3、2、2,就是 322。 铺地锦:23 × 14 明朝的书里就有 2 3 1 4 0 2 0 3 0 8 1 2 0 3 2 2 ① 一格算一个小乘法 3 × 4 = 12, 十位写左上,个位写右下 ② 顺着斜带往下加 中间这条:1 + 8 + 3 = 12, 写 2 进 1 ③ 沿左边、下边读出来 0、3、2、2, 就是 322
图 6 · 铺地锦算 23 × 14:每格一个小乘法,斜着加起来,读出 322

铺地锦的好处是:每个格子只管一个小乘法,用口诀就能算,最后才一起相加。这和战国《算表》的“拆开、分别乘、再加起来”,是同一个道理。

可是铺地锦要先画格子,有点麻烦。有没有不用画格子,也能把数排整齐的办法?

五、今天的竖式:第二行为什么往左挪一格

把 14 拆成 10 和 4

有,那就是我们今天的竖式。它是在许多国家的算术书里一点点改进出来的,后来在欧洲流行开。1613 年,明朝的李之藻根据意大利传教士利玛窦讲的内容,编成了《同文算指》,第一次把这种“用笔在纸上算”的方法系统地介绍到中国8。

现在,我们回到开头那道题。竖式其实只拆了一个数:把 14 拆成 10 和 4。

  • 第一行:23 × 4 = 92。
  • 第二行:23 × 10 = 230。

第二行本来应该写 230。末尾的 0 写不写都一样,大家为了省事就不写了。可是 23 必须留在原来该在的位置上:3 在十位,2 在百位。所以看起来像是往左挪了一格。

竖式的第二行为什么往左挪一格 左边是竖式 23 乘 14:第一行 92 是 23 乘 4;第二行 23 其实是 23 乘 10 等于 230,末尾的 0 省掉了,所以从十位写起;两行加起来是 322。右边把 23 乘 14 的长方形切成上下两块:上面 10 行是 230,下面 4 行是 92。 我们写的竖式 其实是把 14 拆成 4 和 10 3 2 4 1 × 2 9 0 3 2 2 2 3 23 × 4 23 × 10 虚线里的 0 省掉不写, 所以第二行从十位写起 10 4 23 23 × 10 = 230 23 × 4 = 92 上面一大块是 230,下面一小条是 92, 加起来就是 322 竖式的每一行,就是一块
图 7 · 竖式的第二行其实是 23 × 10 = 230,省掉末尾的 0,就成了往左挪一格的 23

如果不挪,把 23 和 92 对齐着加,就得到 115。这等于把 230 当成 23 来加了,少了很多。

竖式就是一张没画出来的格子

把竖式和前面的长方形放在一起看:第一行的 92,是长方形下面那 4 行;第二行的 230,是上面那 10 行。竖式的每一行,就是长方形里的一块。

两千多年前的《算表》、明朝的铺地锦、今天的竖式,用的都是同一个办法:大乘法拆成小乘法,靠“位值”把每一块放到正确的位置上,再加起来。竖式只是把格子“藏”了起来,写得最省事。

六、动手试试:用铺地锦检查竖式作业

动手试试

你需要: 一张纸、一支铅笔、一把尺子,再加上你的乘法作业。

  1. 挑一道两位数乘两位数的题,比如 36 × 47,先用竖式算一遍。
  2. 在纸上画一个两格乘两格的方格,每个格子画一条从右上到左下的斜线。
  3. 上面写 3 和 6,右边写 4 和 7,把每个小乘法的结果填进格子。
  4. 顺着斜带加起来,沿左边和下边读出答案。

两种方法的答案一样吗?如果不一样,一定有一边算错了,回头找一找错在哪一格。

用铺地锦检查竖式作业 左边用铺地锦算 36 乘 47:格子里写 12、24、21、42,斜着加起来,读出 1、6、9、2。右边用竖式算:36 乘 7 得 252,36 乘 4 得 144,往左挪一格写,加起来也是 1692。 铺地锦算 36 × 47 竖式算 36 × 47 3 6 4 7 1 2 2 4 2 1 4 2 1 6 9 2 沿左边、下边读:1692 6 3 7 4 × 2 5 2 0 4 4 1 2 9 6 1 虚线里的 0 不写, 第二行往左挪一格 答案一样
图 8 · 36 × 47 用铺地锦和竖式各算一遍,答案都是 1692

用铺地锦检查时,你会发现:竖式第一行的 252,就藏在格子里“× 7”的那一行(21 和 42);第二行的 1440,就藏在“× 4”的那一行(12 和 24)。两种方法算的是同样的四个小乘法,只是摆法不同。

小结

回到开头的问题,我们一路找到了这些答案:

  1. 为什么数字能竖着对齐来算? 因为我们的数字讲“位值”:站的位置不同,大小就不同,每往左一格大 10 倍。中国古人摆算筹时,就已经这样用了。
  2. 乘法口诀有多老? 秦朝的木板上就写着九九表,大约有 2200 年了。
  3. 两位数乘法怎么算? 把大乘法拆成几个小乘法,分别乘,再加起来。战国的《算表》、明朝的铺地锦,都是这个办法。
  4. 我们写的数字从哪里来? 0 到 9 出生在印度,经过阿拉伯和欧洲,一百多年前才进了中国的课本。
  5. 第二行为什么往左挪一格? 因为它其实是 23 × 10 = 230,末尾的 0 省掉了,23 还要站在十位和百位上。

你开头的猜想猜对了吗?下次写竖式的时候,可以在第二行末尾用铅笔轻轻点一个小点,提醒自己:这里藏着一个看不见的 0。

参考资料

Footnotes

  1. 中国古代的数学瑰宝,到底厉害在哪?新华网(来源:科普中国) · 2024-08-02news.cn ↗讲了算筹、十进位值制,以及算筹用了大约两千年https://www.news.cn/science/20240802/1129bc726ba049c8a92be5b88b7b5abf/c.html ↩ ↩2

  2. Counting rodsWikipediaen.wikipedia.org ↗算筹的纵式、横式,个位纵、十位横交替摆,空位表示 0;《孙子算经》“一纵十横”https://en.wikipedia.org/wiki/Counting_rods ↩

  3. 里耶秦简:探索中国首个大一统王朝的生活全景新华网 · 2024-04-16news.cn ↗2002 年湖南里耶出土的秦简里有九九乘法表,约 2200 年前https://www.news.cn/local/20240416/02cf3c5ad5564b78b41a702fc9275f76/c.html ↩

  4. 清华简《算表》为最早十进制计算器清华大学新闻网 · 2017-04-24tsinghua.edu.cn ↗战国时期的 21 支竹简,能把两位数乘法变成四个数相加https://www.tsinghua.edu.cn/info/1750/71454.htm ↩

  5. History of the Hindu–Arabic numeral systemWikipediaen.wikipedia.org ↗印度的十个数字和 0(628 年婆罗摩笈多)、花拉子米(约 825 年)、斐波那契《计算之书》(1202 年)https://en.wikipedia.org/wiki/History_of_the_Hindu%E2%80%93Arabic_numeral_system ↩

  6. 阿拉伯数字在中国的传播北京大学中国语言学研究中心ccl.pku.edu.cn ↗19 世纪后半叶,数学书开始用阿拉伯数字做计算https://ccl.pku.edu.cn/doubtfire/NumeralUsage/diffusion/diffusion%20of%20arabic%20numbers%20by%20zwd%20lhc.pdf ↩

  7. Lattice multiplicationWikipediaen.wikipedia.org ↗格子乘法的历史:吴敬 1450 年的《九章算法比类大全》、1478 年意大利的《特雷维索算术》https://en.wikipedia.org/wiki/Lattice_multiplication ↩ ↩2

  8. Tongwen Suanzhi (同文算指) and transmission of bisuan (筆算 written calculation) in China萧文强(Siu Man-Keung) · 香港大学数学系hkumath.hku.hk ↗1613 年的《同文算指》第一次系统地把欧洲的笔算介绍到中国,也提到程大位书里的铺地锦https://hkumath.hku.hk/~mks/MKSiu_TongwenSuanzhiBisuan_HPM_Revised.pdf ↩ ↩2