∫π每天一道数学题
← 返回九章算术专题
九章算术 · 第 15 讲 · 2026-09-01 · 约 8 分钟

约分术二:更相减损——91和49的较量

方田章第十五题——把九十一分之四十九约成最简分数。91和49看起来没什么关系,但反复减下去,它们居然有共同的「根」。更相减损术的强大之处在于:它不依赖你一眼看出公因数,它像个机械的齿轮,一步一步地把答案给你转出来。

原文

又有九十一分之四十九。问约之得几何?

答曰:十三分之七。

约分术曰:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。

白话翻译

现在又有分数 4991\frac{49}{91},问约分后是多少?

答案:713\frac{7}{13}

用的还是同样的方法:先看分子分母能不能同时除以 2——49 是奇数,91 也是奇数,不行。所以进入更相减损流程:把 91 和 49 分别放在两边,用大的减去小的,反复减,直到两个数相等。这个相等的数就是"等数"(最大公约数),用它来约分。

示意图

更相减损术 — 91 和 49

91 和 49 的更相减损过程:91 - 49 = 42 → 49 - 42 = 7 → 42 - 7 = 35 → 35 - 7 = 28 → 28 - 7 = 21 → 21 - 7 = 14 → 14 - 7 = 7 → 7 = 7,等数 = 7。

数学解读

1. 这道题和上一道有什么不同?

上一题是 1218\frac{12}{18},一眼就能看出公因数是 6。这一题是 4991\frac{49}{91},49 和 91 之间的公因数就没那么明显了。

49 是 727^2,91 呢?91 看起来不太像一个"整"数——它既不是 7 的倍数(7 × 13 = 91……等等,它确实是 7 的倍数!),但一般人在没算出来之前,不会第一时间想到 91 和 7 有关系。

这就是更相减损术的意义所在——当你一眼看不出公因数的时候,算法可以帮你找出来。 它不需要你"看出来",只需要你"一步步做"。

2. 手动走一遍这个算法

49 和 91,都是奇数,不能"半之"。开始更相减损:

9149=424942=7427=35357=28287=21217=14147=77=7——等数找到了!\begin{aligned} 91 - 49 &= 42 \\ 49 - 42 &= 7 \\ 42 - 7 &= 35 \\ 35 - 7 &= 28 \\ 28 - 7 &= 21 \\ 21 - 7 &= 14 \\ 14 - 7 &= 7 \\ 7 &= 7 \quad \text{——等数找到了!} \end{aligned}

所以等数是 7,于是:

4991=49÷791÷7=713\frac{49}{91} = \frac{49 \div 7}{91 \div 7} = \frac{7}{13}

验证一下:7×13=917 \times 13 = 91713\frac{7}{13} 已经是最简分数了。

3. 7 步减法,效率问题浮现了

上面这个过程中,42 - 7 这一步做完之后,其实后面连续做了 5 次"42 - 7"的变体——实际上是在反复减 7。

如果换成欧几里得算法(辗转相除法):

gcd(91,49)=gcd(49,42)=gcd(42,7)=gcd(7,0)=7\gcd(91, 49) = \gcd(49, 42) = \gcd(42, 7) = \gcd(7, 0) = 7

只用 3 步除法,就得到了结果。

为什么会有这个差距?因为更相减损术每次只减一次,而欧几里得算法一次把能减的都减完——91÷49=14291 \div 49 = 1 \cdots 42,相当于 91 - 49 = 42 做一次,然后 49÷42=1749 \div 42 = 1 \cdots 7,相当于 49 - 42 = 7 做一次,然后 42÷7=642 \div 7 = 6,相当于 42 - 7 - 7 - 7 - 7 - 7 - 7 = 0 做 6 次,但除法一步就得到了 0。

所以从效率上说,欧几里得算法是更相减损术的"加速版"。但古人生活在两千年前,面对的是"步"、"亩"这种级别的数字,加减法已经够用了,压根不需要考虑效率问题。

4. 为什么 91 是 7 的倍数?

这个问题看似简单,但有个数学上的观察:91 和 49 的差是 42,42 是 7 的倍数;而 49 本身也是 7 的倍数。如果两个数都是某个数的倍数,它们的差也一定是这个数的倍数。 反过来,如果两个数的差是某个数的倍数,且其中一个数也是这个数的倍数,那另一个也一定是。

这个观察就是更相减损术成立的理论基础——公因数在减法运算下保持不变:

gcd(a,b)=gcd(ab,b)\gcd(a, b) = \gcd(a - b, b)

一步减法,不改变最大公约数。反复减下去,最终两个数相等,那个相等的数就是它们的最大公约数。

这个性质太美了。每一步减法都没有"损失"信息,每一步都在缩小范围,但每一步都在保护那个"共同的根"。

5. 从"术"到"算法思维"

这道题真正让我感慨的,是《九章算术》里展现的算法思维

什么叫算法思维?就是:不管你有没有数学直觉,只要按照步骤操作,就一定能得到正确答案。

  • 你看不出 49 和 91 的公因数?没关系,按步骤来。
  • 你不知道什么时候该停?按步骤来,两个数相等就停。
  • 你担心算错?每一步都是简单的减法,几乎不可能出错。

这就是"术"的魅力——它是可复制的、机械的、确定性的。任何一个人,只要识数、会减法,就能把这道题算出来。

中国古代数学的"术",本质上就是今天的算法。而算法思维,是计算机科学的核心。两千年前写在竹简上的算法,今天用 Python 写出来,逻辑一模一样。

高中课本关联

算法与程序框图(必修三)

高中必修三的"算法初步"一章,开篇就讲辗转相除法(欧几里得算法)和更相减损术。教材通常会给出两种算法的程序框图:

更相减损术(流程图):
  输入 a, b
  当 a ≠ b:
    如果 a > b: a = a - b
    否则: b = b - a
  输出 a(即为等数)

这个流程图的每一步,都可以对应到《九章算术》里"副置分母、子之数,以少减多,更相减损,求其等也"这段话。两千年前的古文,翻译成现代程序语言,一字不差。

数论基础

最大公约数(GCD)是数论中最基础的概念。虽然高考不直接考数论,但近年的数学竞赛和强基计划中,数论题的比例在增加。而更相减损术这个概念,是最容易入手的数论入门题——它不依赖任何高级知识,只靠加减法。

数学文化题

近几年的高考数学卷中,"数学文化"类题目越来越多。《九章算术》是高频考点,约分术、更相减损术都出现过。如果学生提前读过原典,做这类题简直是"送分"——因为原文已经看过,不需要现场理解古文。

思考与拓展

  1. 用更相减损法求 91 和 49 的最大公约数,你能用更少的步数完成吗?(提示:先做"可半者半之"——但 91 和 49 都不是偶数,这条路走不通)
  2. 试比较更相减损术和欧几里得算法,分别用两种方法求 gcd(1001,143)\gcd(1001, 143),哪个更快?
  3. 如果三个数 49、91、133 一起求最大公约数,更相减损术还能用吗?怎么扩展?

一句话总结

91 和 49 看似没有关系,但"更相减损"七步之后,它们的"等数"7 浮出水面——不是因为你"看出来"了,而是因为算法本身替你找到了它。

— Y. · 2026-09-01