∫π每天一道数学题
← 返回孙子算经专题
孙子算经 · 第 9 讲 · 2026-09-07 · 约 11 分钟

第9讲 约分——古人如何把分数"化简"到最简

孙子算经卷中从一道约分题开始,用'等数'消去公因子——比欧几里得早几百年的最大公约数算法。

原典

今有一十八分之一十二。問:約之得幾何?答曰:三分之二。

術曰:置十八分在下,一十二分在上,副置二位以少減多,等數得六為法,約之即得。

——《孙子算经·卷中》

这是孙子算经卷中的第一道题——一上来就不客气,直接教你约分。

白话翻译

1218\frac{12}{18} 约成最简分数,答案是多少?答案是 23\frac{2}{3}

方法:把分母十八放在下面,分子十二放在上面(注意这跟我们现在"分子在上"的习惯相反),然后反复用大数减小数——十八减十二得六,再用十二减六得六,两者相等。这个相等的数就是"等数"(也就是最大公约数),用它来约分就行了。

这个算法,就是大名鼎鼎的更相减损术

示意图

分数约分过程示意图

更相减损术:反复以大数减小数,直到两数相等,该数即为最大公约数(等数)

数学解读

1. 更相减损术:一种朴素却优雅的算法

孙子算经给出的术文虽然短,但背后的算法非常精妙。我们把它展开成现代语言:

给定分子 1212 和分母 1818,反复做如下操作: 1812=6,126=618 - 12 = 6, \qquad 12 - 6 = 6

当两个数相等时(都等于 66),这个数就是最大公约数,古人称为"等数"。于是: 1218=12÷618÷6=23\frac{12}{18} = \frac{12 \div 6}{18 \div 6} = \frac{2}{3}

这个过程用现代术语来说,本质上是在求最大公约数(GCD)

2. 与欧几里得算法的关系

两千多年后,欧几里得在《几何原本》里给出了一个类似的算法,通常称为辗转相除法

18=1×12+618 = 1 \times 12 + 6 12=2×6+012 = 2 \times 6 + 0

余数为 00 时,最后一个除数 66 就是最大公约数。

中国的更相减损术用的是反复减法,西方的辗转相除法用的是除法取余。两种算法逻辑等价——减法可以看作多次除法的退化形式——但辗转相除法在实际计算中要快得多,因为一步能消掉更多位。

有趣的是,这两个算法的发明时间相差不到一百年(孙子算经约成书于公元4世纪,欧几里得《几何原本》约公元前300年),但独立发展出几乎相同的思想内核,这恰好说明:最大公约数是人类对"数的结构"最自然的理解之一

3. "等数"这个词的精妙之处

孙子算经没有说"最大公约数",而是说"等数"。这四个字非常传神:

  • 当我们不断地用大数减小数,最终两数变得相等——这个相等的值就是等数。
  • 它既是公约数(能整除原来的两个数),又是最大的——因为它已经把所有公因子都"榨干"了。

古人起名的直觉非常精准:等数,就是让两数在反复减法中"走到一起的那个相等的数"。这种以过程定义概念的方式,跟"最大公约数"这种以性质定义概念的方式,体现了不同的思维路径。

4. 约分的本质:分子分母同时除以最大公约数

从现代数学的角度来看,约分其实是一个等价类的概念:1218\frac{12}{18}23\frac{2}{3} 代表同一个有理数,只是表达形式不同。我们说"约到最简",就是在所有等价的分数表达中,找一个分子分母互质(即最大公约数为 11)的代表。

孙子算经虽然没有明确说出"等价类"这个词,但他操作的每一步都是精确的——因为同时除以同一个非零数,分数的值不变: 1218=12÷618÷6=23\frac{12}{18} = \frac{12 \div 6}{18 \div 6} = \frac{2}{3}

这是分数运算最基础的守恒律,孙子时代就已经牢牢掌握。

5. 更一般的约分思路

孙子算经在卷中后面的题目里,还举了一个更复杂的例子:

今有三分之一、五分之二。问:合之二得几何?

这里需要先通分,再加法。而约分则是通分的逆过程——先把每个分数化成最简形,再找公分母做运算,这样能避免中间数字过大。这个思想在今天依然是分数计算的标配:先约后算,比先算后约更高效。

高中课本关联

① 分数运算与最简分数(必修第一册·有理数)

初中学过"约分"和"通分",但通常只教操作步骤——"分子分母同时除以它们的最大公约数"。孙子算经给了一个很好的视角:为什么要约分? 答案就是让分数表达最简洁,方便后续运算。高考中关于分数运算的题目,往往会在最后要求写成最简形式,这里的"最简"对应的就是孙子所说的"等数"消干净的状态。

② 最大公约数与欧几里得算法(必修第二册·数列/数论初步)

高中数学竞赛里经常出现的欧几里得算法,其实就是孙子更相减损术的现代版。两者的核心思想完全一致:若 a>ba > b,则 gcd(a,b)=gcd(b,amodb)\gcd(a, b) = \gcd(b, a \bmod b)(辗转相除)或 gcd(a,b)=gcd(b,ab)\gcd(a, b) = \gcd(b, a - b)(更相减损)。竞赛中常见的问题如"求两个大整数的最大公约数",用更相减损术做演示,既直观又贴近算法思维。

③ 同余与模运算(选修·数论初步)

辗转相除法背后有一个很深的结构:每次取余,其实是在做模运算。当我们说 186(mod12)18 \equiv 6 \pmod{12},就是在说 1818 减去 1212 之后剩 66。孙子算经的"以少减多"本质上就是一种不断缩小的同余变换,直到余数为零(或者说两数相等)。这是通向中国剩余定理和现代数论的桥梁。

教学启示

在教"约分"的时候,建议不要只停留在"除以最大公约数"这个机械步骤上。你可以让学生亲手演算一遍更相减损术

  1. 给出一道约分题(比如 126189\frac{126}{189})。
  2. 让学生用反复减法来求最大公约数。
  3. 再对比一下辗转相除法,看哪个更快。

这个过程不仅能让学生理解为什么要除以最大公约数,还能让他们体会到:数学算法从来不是唯一的一条路,不同的文化会走出不同的路径,但最终都会汇聚到同一个本质

另外,这道题还有一个很巧妙的设计:孙子把分母放在下面、分子放在上面。这跟我们今天"分子在上"的习惯相反,但它其实更符合"被除数在前"的直觉——你总是要用大的那个数(分母)去除,对吧?在教学时提一下这个历史差异,能让学生对数学符号的系统性有更深的认识。

思考与拓展

  1. 算一算:用更相减损术求 gcd(252,198)\gcd(252, 198),写出每一步。再对照辗转相除法,比较两种方法的步骤数。

  2. 想一想:孙子说"副置二位以少减多,等数得六为法"。如果分子分母一开始就相等(比如 66\frac{6}{6}),"等数"直接就是分子本身,结果就是 11。这个边界情况说明了什么?

  3. 挑战题:求 18!30!\frac{18!}{30!} 约分后的最简形式。(提示:18!18!30!30! 的最大公约数就是 18!18!,但这个结果是一个分数,试着把它写成 1n\frac{1}{n} 的形式。)

一句话总结

最相减损求等数,约分之道在其中——孙子用最朴素的手工减法,写下了人类历史上最早的"GCD算法",这比西方的欧几里得只晚了几百年。

— Y. · 2026-09-07