九章格数学 PhiloMath · 中国古代数学故事绘本

殊途同归 · 将军的兵有多少

第 06 册 · 中国古代数学故事绘本 · 明线:同余与物不知数、大衍求一术 暗线:同归而殊涂
明线 · 同余、物不知数与大衍求一术暗线 · 同归而殊涂 · 一致而百虑南北朝—南宋全龄通识 · 三层可读
题解这一册怎么读p.2

大军列在旷野上,黑压压一片,头看不见尾。要造册点清人数,一个一个地点,数到天黑也数不完。

古人想出一个巧办法:不必一个个数,只让兵排队——每三人一排、每五人一排、每七人一排,每次只记下排到最后、多出来的那几个人。数了三次,竟能把人数算出来。

这一册讲的,就是这件奇事:只见三个「零头」,怎能反推出整支大军的人数。

三层

故事层——跟着画面往下读,先读故事。

数学层——暖金色的框里,是这一页真正的数学。

注疏层——页面下方的小字,抄着古书里的原话,给一起读的大人。

五幕一览
第一幕 将军只数了三次余数 · 第二幕 三个不同的尺子 · 第三幕 合起来就唯一了
第四幕 秦九韶的算法 · 第五幕 一首歌诀里的三百年
引子一眼望不到头p.3

军中要造一册名簿了:这支大军,究竟有多少人?

将军登上高坡,往下一望——黑压压一片,头看不见尾。

一个一个地点数,数到天黑也数不完;何况兵还在走动,数着数着就乱了。

引子让兵站成队p.4

营里有个少年兵阿余,平日最爱摆弄石子算数,凑上来说:「不必一个个数,让兵排队就成。」

「每三人一排!」——排到最后,多出两个兵。

「再每五人一排!」——排到最后,多出三个。

「每七人一排!」——排到最后,多出两个。

引子只露一角p.5

三次排完,只记住三个零头:余二、余三、余二。

可这点消息,还看不出人有多少——「余二」的队伍,可以是五人,也可以是八人、十一人……排下去没完没了。

奇怪的是:三个零头合在一起看,答案就只剩一个了。这一册,就讲这「合起来」里头的道理。

故事 · 第一幕点兵之难p.6

将军要在天亮前造好名簿,可这兵,一时数不清。

少年兵阿余凑上来,说自家摆弄石子时得过一个法子:「将军,让兵排队试试。」

将军一挥手:「排!」

数学 · 第一幕三三数之,剩二p.7

「每三人一排!」士兵飞快排好。排到最后,队尾多出两个,站不成排。

阿余把这两个记在石子上:「三三数之,剩二。」

数学

把人数记作 N。每三人一排、最后剩二,就是:N 除以 3 余 2。

换一句话说:N 减去 2,能被 3 整除。

数学家用一个记号把它写短:

N ≡ 2 (mod 3)

读作「N 与 2,对 3 同余」。

数学 · 第一幕五五、七七,各余几p.8

「再每五人一排!」——排好,队尾空出三个。

「每七人一排!」——排好,队尾空出两个。

三次排队,得了三个数:余二、余三、余二。阿余一一记下。

数学

三次排队,就是同一支人数 N 的三种「余数」:

N ≡ 2 (mod 3)

N ≡ 3 (mod 5)

N ≡ 2 (mod 7)

这样的一组式子,古人叫「同余式组」。问题变成:找一个 N,同时满足这三条。

数学 · 第一幕三条线索,一个数p.9

三条线索摆上案。阿余看着看着,眼睛亮了:三个石子堆一齐指,指向的是同一个地方。

数学

三个模数 3、5、7 互质,乘起来得 105。

可以证明:在 0 到 104 之间,满足这三条的数只有一个。

这叫「模 105 意义下唯一」。放宽到更大范围,答案就是「那个数,再加 105 的整数倍」——像月亮每月重来一次。

3 ✕ 5 ✕ 7 = 105

暗线 · 同归而殊涂三条路,一个家p.10
天下同归而殊涂,一致而百虑。——《周易·系辞下》

《周易》说:天下人走向同一个归宿,走的却是不同的路;达成同一个结果,动的是百样的心思。

三个余数,正是三条不同的路——模 3 一条、模 5 一条、模 7 一条。每条路都只看清一角,合起来却指向同一个终点。

看一样东西看不清,就换几个角度去量它——这是古人对付难题的老办法。

明暗交汇 · 第一幕三把尺子,一个数p.11

将军看着案上那三小堆石子,将信将疑:就凭三个零头?

阿余说:「三把尺子量同一根竹竿,尺子各不相同,量出的余头也不同;可三下一比,竹竿有多长,就藏不住了。」

看清一件东西,有时不必死盯着它——换几把尺子,去量它的四周。

并置

同一画面里,站着两种眼光:一种想「一眼看穿」,一种肯「换个角度」。

小结 · 第一幕幕末 · 两句p.12
术
数不清的兵,让兵排队点数:三三数之剩二、五五数之剩三、七七数之剩二——三个余数就是三条线索。
道
同归而殊涂:一条路看不全,就换几条路一起看——不同的路,通向同一个答案。
故事 · 第二幕一把尺子,量不出全部p.13

将军问:「只排一次队,成不成?」

阿余摇头:「不成。只看一次,合得上『余二』的人会排成长长一串——五人、八人、十一人……全对得上,可全不是真数。」

「一把尺子太短,量不到那根长竹竿的尽头。」

数学 · 第二幕第一条路的候选p.14

「三三数之剩二」的人,到底长什么样?阿余在纸上排出一列数。

数学

满足 N ≡ 2(模 3)的数,一个个排下去是:

2,5,8,11,14,17,20,……

规律很简单:从 2 起,每次加 3。

它是一列等差之数,无穷无尽——单看这一条,N 可能是其中任何一个。

数学 · 第二幕第二条路的候选p.15

再看「五五数之剩三」。阿余另排一列。

数学

满足 N ≡ 3(模 5)的数:

3,8,13,18,23,28,……

同样是一列无穷的数,只是这回想加的数是 5。

两条路各自都指不到一个确定的数——它们都太宽了。

数学 · 第二幕多一条,窄一点p.16

阿余把两列数上下对齐:「看,两条一起算,能对上号的,一下子少了好多。」

数学

两条一起看:既要 N ≡ 2(模 3),又要 N ≡ 3(模 5)。

这样的数,每隔 15 才出现一次;

3 ✕ 5 = 15

可每隔 15 一次,还是很多——仍定不下一个数。要三条一起上,才够。

暗线 · 各见一角各人看见的各不同p.17
仁者见之谓之仁,知者见之谓之知。——《周易·系辞上》

《周易》说:同一件事,仁厚的人见了说是仁,聪明的人见了说是智——各人只看见自己那一面。

模 3、模 5、模 7,正像三个站在不同地方的人,各看见大石的一角。

一角看不清全貌,不是眼睛不好,而是站的地方只够看见一角。要见全貌,得把几个地方都站过。

明暗交汇 · 第二幕各量一角p.18

阿余把三列数对着看。三个零头单看都糊涂,合在一起,轮廓却一点点清楚起来。

「原来不是要一眼看穿它,是要把它拼出来。」

并置

一种眼光求「一瞥即明」,一种眼光信「积少成多」——算家选后者。

小结 · 第二幕幕末 · 两句p.19
术
一条同余式的解有无穷多,单看一条定不下数;多看几条,候选才一点点收窄。
道
各见一角:看得偏,未必是看得错。把几个角拼起来,才见全貌。
故事 · 第三幕三个零头,拼出一个数p.20

三列数排在案上。阿余顺着往下数,数到第二十三,停住了——三列数,都在这里踩着同一个点。

「二十三。」他抬头,「按这法子,兵是二十三人。」

将军一愣:「就这么点?」阿余笑:「这是最小的一个数。往后每隔一百零五,又是这么一支兵。」

数学 · 第三幕逐条叠加,取交集p.21

怎么找那个「同时对得上三条」的数?阿余有笨办法:一条一条往上加。

数学

要找 N 同时满足三条。先看只满足前两条的数:

8,23,38,53,68,……

从 8 起,每次加 15(即 3 ✕ 5)。

再从中挑出还满足第三条「模 7 余 2」的——第一个便是 23。

验一验:23 ÷ 3 余 2、23 ÷ 5 余 3、23 ÷ 7 余 2,三条全中。

数学 · 第三幕一个解,一族解p.22

「那要是兵更多呢?」将军追问。阿余指了指纸上那一长串:「加一百零五就是了。」

数学

最小正解是 23。接着是 23+105=128,再接着是 233……

N = 23 + 105k (k = 0, 1, 2, …)

为什么每隔 105 重来一次?因为 105 是 3、5、7 的最小公倍数——三个条件在这里走完一整圈。

数学 · 第三幕为什么叫「唯一」p.23

「三个零头,凭什么锁得住一个数?」阿余在纸上画了三道刻痕。

数学

「合起来唯一」,意思是:在 0 到 104 这一段里,满足三条的数有且只有一个。

三个条件像三把锁,一把比一把严;三把一齐扣上,整段 105 个数里,就只剩一把钥匙开得动。

3 ✕ 5 ✕ 7 = 105 | 0…104 内唯一

暗线 · 殊涂同归各走各的路,走到一处p.24
万物并育而不相害,道并行而不相悖。——《礼记·中庸》

《中庸》说:万物一同生长,彼此不妨害;大路各走各的,并不相冲突。

模 3、模 5、模 7,三条路各走各的,谁也不挡谁;可它们同时指着同一个数,一点也不矛盾。

「同归」不是把三条路强行并成一条,而是容它们并行——走到头,自会相遇。

明暗交汇 · 第三幕三条路,一个点p.25

三条路都通到 23 这个点。阿余忽然明白了「殊涂同归」四个字的意思。

不必让所有的路合成一条——让它们各自平行着走,走到头,自会相遇。

并置

阿余手里捏着三小堆石子,心里想的是同一句话:各走各的路,走到一处。

小结 · 第三幕幕末 · 两句p.26
术
三条同余式合看:逐条叠加取交集,最小正解得 23;通解是 23 加 105 的整数倍。
道
道并行而不相悖:各走各的路,不必强行合并——走到头,自会相遇于一点。
故事 · 第四幕五百年后的巧算p.27

阿余那套「一条一条往上加」的笨办法,人少时还成;兵要是成千上万、条件加到十三条呢?

五百多年后,南宋的秦九韶也想到了这道题。他不满足于「碰巧算出一个」,要把这法子写成一套人人能照做的算法。

他把算法记进《数书九章》,起名叫「大衍总数术」。

数学 · 第四幕第一步 · 定数p.28

秦九韶的算法分四步。头一步,先把题里的几个除数端端正正记下来。

数学

秦九韶把题里的除数叫「定数」——好比几把刻度不同的尺子。

本题的定数就是 3、5、7,三个两两互质的数。

(若几个除数不互质,要先化简成互质的一组,这一步他叫「约」;本册不深究。)

定数:3 5 7

数学 · 第四幕第二步 · 衍母、衍数p.29

第二步,把三个定数合成一个「大数」,再由它分出三份。

数学

把定数全部乘起来,叫「衍母」:

衍母 = 3 ✕ 5 ✕ 7 = 105

再用衍母去除每一个定数,得「衍数」:

105 ÷ 3 = 35 105 ÷ 5 = 21 105 ÷ 7 = 15

三个衍数 35、21、15,各是「除自己那一条以外,其余定数的乘积」。

数学 · 第四幕第三步 · 乘率p.30

第三步最要紧:给每个衍数配上一个数,让它们「配成一对」。

数学

要给衍数找一个「乘率」,使衍数乘上它以后,对相应的定数余 1。

先把 35 试起:要让 35 乘某数后对 3 余 1。

35 ✕ 2 = 70,70 ≡ 1 (mod 3)

同理,21 的乘率是 1(21 ≡ 1,模 5);15 的乘率也是 1(15 ≡ 1,模 7)。

于是得三个「用数」:70、21、15。

暗线 · 一以贯之一套办法,万般情形p.31
吾道一以贯之。——《论语·里仁》

孔子说:我的道理,用「一」贯穿到底。

秦九韶的算法也正是这般:不管三个余数还是三十个,动手的次序一模一样——定数、衍母、衍数、乘率,一步步走下来,永不用改。

变的是题,不变的是那「一」条路子。这就是「一以贯之」:一套办法,贯通万般情形。

明暗交汇 · 第四幕笨法与巧法p.32

阿余的笨办法,与秦九韶的巧办法,走的是同一条路——只是一个用脚一步步量,一个把步子记成了一本谱。

谱有了,再多的零头,也不过是照着走一遍。

并置

同一条路子,一副是随手而行,一副是落笔成法。数学的进步,常就藏在「把它写成谱」这一步里。

小结 · 第四幕幕末 · 两句p.33
术
大衍总数术四步:定数(3、5、7)→ 衍母(105)→ 衍数(35、21、15)→ 乘率(2、1、1),得用数 70、21、15。
道
吾道一以贯之:好算法不挑题——形式千变,步骤照旧,一道程序贯通万般情形。
故事 · 第五幕编成歌诀好记p.34

秦九韶的算法,好是好,只是步骤太多,寻常人不耐烦记。

又过了三百多年,明代程大位编《算法统宗》,把这道题的关键几步,编成四句顺口溜——像童谣一样,念几遍就忘不掉。

数学 · 第五幕那三个数,什么来头p.35

歌诀里的三个数,打哪儿来?其实正是上一幕求得的三个「用数」。

数学

70 21 15

这三个数各有一个了不起的性子——「只管自己那条,别条一概不碰」:

70:÷3 余 1,却被 5、7 整除;

21:÷5 余 1,却被 3、7 整除;

15:÷7 余 1,却被 3、5 整除。

正因为如此,拿它们分别去乘对应的余数,再一加,三个零头就各归其位、谁也不搅谁。

数学 · 第五幕四句歌诀,一句一用p.36

阿余要是念过这四句,大约也会拍手叫好。

数学

三人同行七十稀,五树梅花廿一枝,
七子团圆正半月,除百零五便得知。

三人同行七十稀——「三三数之」那一条,用 70 去乘它的余数;

五树梅花廿一枝——「五五数之」那一条,用 21;

七子团圆正半月——「七七数之」那一条,用 15(半个月正是十五);

除百零五便得知——三个乘积加起来,再减 105 的整数倍,剩下的便是答案。

数学 · 第五幕照着歌诀算一遍p.37

把三个零头代进去,亲手算一遍。

数学

余数是 2、3、2,各配用数 70、21、15:

70 ✕ 2 + 21 ✕ 3 + 15 ✕ 2 = 140 + 63 + 30 = 233

233 太大了,再减掉 105 的整数倍:

233 − 105 ✕ 2 = 233 − 210 = 23

得 23——与阿余一条条数出来的,分毫不差。

暗线 · 殊涂同归再念一遍那两句话p.38
同归而殊涂,一致而百虑。——《周易·系辞下》

再念一遍开篇那句话,意思比先前厚了一层。

三个人量同一块石,三条路通同一个点,三道算式拼同一个数——殊涂,同归。

从孙子的三个余数,到秦九韶的四步算法,再到程大位的四句歌诀,是同一件事的三种说法。形式变了又变,那个「一」始终没变。

明暗交汇 · 第五幕一道题,三个时代p.39

三百年,从纸上的算法,走到口边的歌谣。

一支军队的人数,就这样被三个零头钉死;而这法子,一路传到了民间的算盘铺子里。

一道题,三个时代,一条路。

并置

算法成为歌诀,是学问落地的样子:不好记的,编成好念的——这也是一种「殊涂同归」。

小结 · 第五幕幕末 · 两句p.40
术
歌诀四句:用数 70、21、15 各乘其对应的余数,求和,再减 105 的整数倍——「除百零五便得知」。
道
殊涂同归:同一件事,可以落笔成算法,也可以编成歌谣;形式千变,其理一也。
收束回望:一条线索p.41

回望这一册,是一条线串起的三站。

校场上,三个零头最先露面;灯下,它们合起来拼出一个数;再往后,这法子被写成算法、又编成歌谣,一路传了下去。

三个余数,一个答案,一条路——人就是这样,从「看不全」走到「看得清」的。

收束早到的答案p.42

这道题,我们是「早到的客人」。

别处的算师还在为三个余数犯难时,中国算家已把它的解法写成了通法。这法子后来被称作「中国剩余定理」——名字里的「中国」,正是对它出处的记认。

学问不怕早到,只怕没有人肯把它接过来。

收束 · 留问留下的一个问题p.43
三三数之剩二,五五数之剩三,七七数之剩二,问物几何?——《孙子算经》

这一册留一个问题。

古法用的是三个互质的模数——3、5、7,两两不共因数,所以答案被钉得死死的。

可要是模数并不互质呢?比如「四四数之剩二、六六数之剩四」——它们有公因数。这时答案还有没有?又还剩几个?

动手做 一点一次自己的兵p.44

歌诀里那三个数,家里也背得下来。

材料:纸、笔,外加一捧石子或豆子。

做法

一 随手抓一把石子,先别数;只记「三三数之、五五数之、七七数之」三次各余几。

二 照歌诀写:三个余数分别乘 70、21、15,把三个积相加。

三 从和里减 105 的整数倍,减到不能再减(但仍留正数)。

四 得数报出来,再去数一数石子。若石子多于一百零五,得数要再加上 105 的若干倍。

动手做 二编一首自己的歌诀p.45

换几个模数,也能编一首自己的歌诀。以「四、五、九」为例。

做法

一 衍母=4 ✕ 5 ✕ 9=180。

二 衍数:180÷4=45、180÷5=36、180÷9=20。

三 求乘率:45 对 4 余 1(乘率 1);36 对 5 余 1(乘率 1);20 对 9 余 2,2 ✕ 5=10 ≡ 1(乘率 5)。

四 三个用数:45、36、100(=20 ✕ 5)。照此三数各乘余数、相加、再减 180 的整数倍,答案就出来了。

小典 一术语 · 记号p.46
术语

同余——两数之差若能被某数整除,就说它们对这数「同余」。记号 ≡:N ≡ 2 (mod 3) 读作「N 与 2 对 3 同余」。

模——同余里的那个除数(这里就是 3)。模 3 的世界里,数只分「余 0、余 1、余 2」三类。

剩余类——同一模下「余数相同」的一族数,如 2, 5, 8, 11, … 属于模 3 的「余 2」那一类。

同余式组——若干个同余式联立,要求同一个数同时满足它们;本册的核心问题。

物不知数——《孙子算经》的名题:「三三数之剩二,五五数之剩三,七七数之剩二」,答二十三。

定数 / 衍母 / 衍数 / 乘率 / 用数——大衍总数术的五件术语:定数即模(3、5、7);衍母即模之积(105);衍数即衍母除以各模(35、21、15);乘率使衍数乘它对本家模余 1(2、1、1);用数=衍数×乘率(70、21、15)。

大衍求一术——秦九韶用以求乘率的辗转相除之法,是整个算法的关键一笔。

中国剩余定理——模数两两互质时,同余式组在模其积的意义下有唯一解;即本册所讲的「合起来就唯一了」。

小典 二术理 · 人名 · 典籍p.47
术理

「物不知数」的要害,是把一个未知的数「换个说法」:不问它究竟是多少,只问它被几把尺子量过之后各剩多少。三个互质的模数合起来,能认住 105 以内唯一的那个数——于是「看不全」变成了「看得清」。秦九韶的贡献,是把这套想法整理成一步步照做即可的算法;歌诀,则是它的民间简本。

人名

(托名)孙子——《孙子算经》作者,生平不详,「孙子」盖为后人托名,其书约成于公元三至五世纪。

秦九韶(约 1208–1268,南宋)——著《数书九章》,创「大衍总数术」与「大衍求一术」,系统解决一次同余式组。

程大位(1533–1606,明)——著《算法统宗》,载「物不知数」解法歌诀,使古法广传民间。

高斯(1777–1855,德国)——在《算术研究》(1801)中给出同类结果的近代形式,晚于秦九韶约五个半世纪。

典籍

《孙子算经》——「物不知数」的出处;《数书九章》——大衍总数术的出处;《算法统宗》——歌诀的出处;《周易·系辞》——「同归而殊涂,一致而百虑」;《礼记·中庸》——「道并行而不相悖」;《论语·里仁》——「吾道一以贯之」。

延伸 一同余在今天p.48

「同余」离生活一点也不远。

钟表按十二小时一圈转,星期按七天一轮回——都是「到了头就重来」。

延伸

「现在几点」其实是一个模 12 的问题;「今天星期几」是模 7。

书号、身份证号末尾的校验码,也是拿整串数按不同模去算,用来查有没有抄错。

——都是同一件事:把无穷多的数,收进有限的几个「余数」里。

延伸 二从同余到密码p.49

门前那几堆石子,后来走了很远。

今天加密信息用的许多方法,底下站着的,正是「同余」这门看家功夫。

延伸

有一类加密,靠的是「两个大数相乘容易,反过来拆解极难」;而拆解与还原,用到的正是同余与大数取余。

发信、收信各持一把「钥匙」,其中的一把摆在明处也无人能仿——这钥匙的牢靠,就架在同余的性质上。

古人「换观点看数」的巧思,隔着一千多年,成了今日守密的一道门锁。

家长导读 一这一册在讲什么p.50

这一册有两条线,一明一暗。

明线(暖金):同余的说法、《孙子算经》「物不知数」、逐条叠加取交集、秦九韶「大衍总数术」四步、程大位歌诀——四件出自中国算学的看家功夫,串在「点兵」这一桩巧事上。

暗线(青绿):「同归而殊涂,一致而百虑」——看不全一样东西时,换几个角度去量它周围。这既是中国哲学对「殊途同归」的洞察,也是同余算法的魂。

共读建议

· 先读故事层,不必急着讲算式;

· 数学层里「余数乘用数再相加」的一段,最宜带孩子用石子亲手做一遍(见动手做两页);

· 五页暗线页与每幕的交汇页(偏青绿),适合慢读——只问不答,让画面自己说话。

家长导读 二留下的问题p.51

三个可以不急着回答的问题,留给亲子一起慢慢聊。

三问

一 只数三次零头,为什么能知道总数?
因为三个互质的模数合起来,像三把刻度不同的尺子,把答案的范围一路收窄,直到只剩一个——「看不全」不妨碍「算得清」。

二 同一个数,为什么换个看法就清楚了?
数的「真身」没变,换的是量它的尺子。难题解不开时,常常不是难题太硬,而是取的视角太单一——这也是「换位思考」在算术里的化身。

三 一个道理,为什么要既写成算法、又编成歌谣?
算法给人照做,歌诀帮人记牢。学问要生根,既得有严整的谱,也得有顺口的调——「殊涂」之中,藏着让道理走得更远的两条路。

写下想法
(此处留给亲子手写。读完这一册,最想留住的一句话是什么?)
版权版权与编目p.52
编目

《中国古代数学故事绘本》第 06 册
殊途同归 · 将军的兵有多少

明线:同余 · 物不知数 · 大衍求一术
暗线:同归而殊涂 · 一致而百虑

时代:南北朝—南宋(约 3–5 世纪至 1247 年)
主典:《孙子算经》;《数书九章》秦九韶;《算法统宗》程大位;《周易·系辞》

体例:扉页与题解 2 页 · 引子 3 页 · 五幕 35 页(每幕:故事 1 · 数学 3 · 暗线 1 · 交汇 1 · 小结 1)· 收束与留问 3 页 · 动手做 2 页 · 小典 2 页 · 延伸 2 页 · 家长导读 2 页 · 版权 1 页,共 52 页。

全套十册,依历史时序,自先秦至明清。本册为第六册。