分数:除法的艺术
分数:除法的艺术
一个蛋糕,五个人,怎么分?这个问题看似简单,却困扰了人类数千年。当我们今天脱口而出“五分之一”这个答案时,几乎意识不到这个答案背后隐藏着一套精密的数学语言。而这套语言,早在两千多年前的中国,就已经发展得相当成熟了。
问题在于,当我们用 $1 \div 5 = \frac{1}{5}$ 这样的现代符号表达这个结果时,我们其实在使用一套极其晚近的符号系统。分数线是印度人在公元7世纪左右发明的,上下排列的分子分母形式则要等到12世纪才在欧洲普及。而在更早的时期,包括中国先秦两汉的数学家们,他们需要面对一个根本性的问题:如何在没有分数符号的情况下,准确表达和计算“部分与整体的关系”?
这不仅是记号的问题,更涉及对“分数”本质的深层理解。当我们今天学习分数时,往往从“分子÷分母”的除法定义出发,把分数视为两个整数相除的商。但《九章算术》的思路截然不同——它从“率”的概念出发,把分数理解为两个量之间的相对关系。这种理解方式不仅产生了独特的算法,还让中国古代数学在分数运算领域领先欧洲将近一千年。
让我们从《九章算术》原文出发,去理解古人如何在没有分数符号的情况下,建立起完整的分数理论。
分数的本质是“率”
《九章算术·方田章》是全书处理几何与算术问题的开篇章节。在这一章中,“分”是一个核心概念。但如果我们仔细阅读原文,会发现一个有趣的现象:书中讨论的“分”并不等同于我们今天所说的分数。
原文开篇写道:“方田术曰:广从步数相乘得积步。”这是矩形面积公式。但接下来讨论的“分”是什么呢?答案是各种形状土地的面积分割问题。比如,第二题:“今有田广十五步,从十六步。问为田几何?”这是一块240平方步的土地。
问题的关键出现在处理不规则形状时。当一块地被分成若干部分,但各部分形状不统一时,如何计算总面积?这就引出了“率”的概念。
所谓“率”,在《九章算术》的语境中,指的是两个量之间的比例关系。它不是孤立的“几分之几”,而是“甲是乙的几分之几”这样的相对表述。例如,书中会问:“今有粟一斗七分斗之一,问为米几何?”这里的“一斗七分斗之一”就不能简单理解为 $\frac{1}{7}$ 斗,而应理解为:粟的量是某个基准的 $1\frac{1}{7}$ 倍,而这个基准与米的兑换比例是已知的。
这种理解方式带来一个重要后果:分数不是作为一个独立的数出现的,而是作为描述比例关系的工具出现的。 当我们说“三分之二”时,在《九章算术》的语境中,实际上是在说“三与二之比”,也就是三份相对于二份的关系。
为了表达这种关系,古人使用了“实名”与“虚名”的区分。实名称具体的量,虚名则表示这些量之间的比例。例如“三分之二”,在《九章算术》中会表述为“三分之二升”——这里的“三”和“二”是虚名,表示比例;“升”是实名,表示实际的量。但“三分之二升”究竟是多少升?答案取决于“三分之二”相对于什么基准。换言之,“率”本质上是一个比值,它需要放在具体的上下文语境中才能确定其绝对大小。
这种表达方式在今天看来可能有些不便,但它有一个重要优势:它天然地处理了不同单位之间的换算问题。当我们把“三分之二”理解为比例关系而非具体数值时,就可以在不同情境下灵活应用——三份黄金对应两份白银,或者三天工作对应两天休息,都能用同样的“率”来描述。
理解了这一点,我们就能明白为什么《九章算术》中的分数运算要以“率”为核心展开了。
分数四则运算的原始算法
在“方田章”中,《九章算术》系统地给出了分数加、减、乘、除四种运算的算法,分别称为合分、减分、乘分、经分。我们依次来看这些算法的具体内容。
合分术——分数加法
合分术原文如下:
> 合分术曰:母互乘子,并以为实,母相乘为法。
这句话是什么意思呢?假设我们要计算 $\frac{a}{b} + \frac{c}{d}$。按照合分术,首先让两个分数的分子分母交叉相乘:$a \times d$ 和 $c \times b$;然后将这两个积相加作为“实”(即分子);最后让两个分母相乘作为“法”(即分母)。用现代符号来表示,就是:
$$\frac{a}{b} + \frac{c}{d} = \frac{ad + cb}{bd}$$
这正是我们今天所学的分数加法通分法则。但关键在于,古人没有写出这个公式,他们只是给出了操作步骤。让$b$和$d$互乘$a$和$c$,然后把两个乘积相加——这个过程用文字表述就是“母互乘子,并以为实”。你能看出这是通分的本质吗?两个分母的乘积恰好是它们的最小公倍数(当它们互质时),而交叉相乘恰好等价于将两个分数化为同分母后的分子。
减分术——分数减法
减分术的原文与合分术几乎完全相同,只是最后一步从“并”变成了“各减其分”。具体而言:
> 减分术曰:母互乘子,以少减有,余为实,母相乘为法。
仍然计算 $\frac{a}{b} - \frac{c}{d}$,但这里有一个微妙之处:如何比较两个分数的大小?古人需要先判断被减数(“有”)和减数(“少”)哪个更大,然后才能执行减法。但这个判断在古人的实际运算中是如何进行的?
答案是“齐同”。在进行减法之前,先把两个分数化为分母相同的等价分数,然后比较分子。分子大的分数就是较大的分数。这种“先通分再比较”的思路,与现代数学的逻辑完全一致,但表达方式是通过具体的操作步骤而非抽象的数学命题来呈现的。
乘分术——分数乘法
乘分术的原文非常简洁:
> 乘分术曰:母相乘为法,子相乘为实。
这对应于我们熟悉的公式:
$$\frac{a}{b} \times \frac{c}{d} = \frac{ac}{bd}$$
分子乘分子,分母乘分母。在现代数学中,我们知道这个公式来自于将分数视为除法的逆运算。但《九章算术》的推导方式不同:它是通过“率”的叠加来理解的。$\frac{a}{b}$ 意味着“每 $b$ 份中的 $a$ 份”,而 $\frac{c}{d}$ 意味着“每 $d$ 份中的 $c$ 份”,两者相乘就是“每 $bd$ 份中的 $ac$ 份”。这种理解方式在处理实际问题——比如土地面积、单位换算——时显得非常自然。
经分术——分数除法
经分术是四种运算中最复杂的一个,原文如下:
> 经分术曰:以人数为法,钱数为实,除之。
等等,这说的是除法吗?怎么只有除法,没有分数的除法?实际上,这里的“经分”特指用整数除整数但结果不是整数的情况,即产生分数的除法。原文接着给出了更一般的情况:
> 经分,母互乘子,各自为实,除之。
让我们仔细分析这句话。如果要计算 $\frac{a}{b} \div \frac{c}{d}$,按照经分术,应该先把 $\frac{a}{b}$ 的分子分母互换得到 $\frac{d}{c}$,然后用乘分术与 $\frac{c}{d}$ 相乘。但原文说的是“母互乘子”,这似乎指向另一种算法。
现代学者的研究表明,《九章算术》中存在两种不同的分数除法理解方式。第一种出现在“方田章”,采用“颠倒相乘”的方法——这正是我们今天的标准做法。第二种出现在“粟米章”等处理比例问题的章节中,采用的是“方程术”的思路,即把除法问题转化为等量关系,通过消元来求解。
第二种方式特别值得注意。因为“方程术”是《九章算术》中处理线性方程组的核心算法,它通过“遍乘直除”的步骤逐步消元。当分数除法被纳入“方程术”的框架时,实际上是将除法问题嵌入了一个更大的代数结构中。这暗示了一个重要事实:《九章算术》的分数理论不是孤立的算术技巧,而是与代数思维紧密交织在一起的。
约分与通分的原始方法
分数运算的一个核心问题是结果的简化。当 $\frac{4}{6}$ 出现时,我们需要知道它等于 $\frac{2}{3}$。这个过程叫约分。现代数学告诉我们,约分需要找到分子分母的最大公约数,然后用它去除分子和分母。
《九章算术》如何找到这个最大公约数呢?答案是更相减损术。
更相减损术出现在“方田章”第三十七题,原文如下:
> 可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。
这段话有几个要点。首先,“可半者半之”意味着如果分子分母都是偶数,就先同时除以2,这个过程可以重复进行。其次,“不可半者”意味着当分子分母不都是偶数时,需要进入下一步。
关键步骤是“以少减多,更相减损,求其等也”。假设我们要约分 $\frac{b}{a}$,且 $b > a$。那么计算 $b - a$,用差值与 $a$ 比较,再次用较大的减去较小的,如此反复,直到分子分母相等。这个相等的数就是原始分子分母的最大公约数。
让我们用一个具体例子来演示。假设要约分 $\frac{48}{36}$:
1. 两个数都是偶数,先各除以2,得到 $\frac{24}{18}$ 2. 仍然都是偶数,再各除以2,得到 $\frac{12}{9}$ 3. 现在9是奇数,进入更相减损术:用12减去9得3,得到(9, 3) 4. 用9减去3得6,得到(6, 3) 5. 用6减去3得3,得到(3, 3) 6. 两个数相等,停止。最大公约数是 $2 \times 2 \times 3 = 12$
所以 $\frac{48}{36} = \frac{48 \div 12}{36 \div 12} = \frac{4}{3}$
这个算法实际上是欧几里得算法(即辗转相除法)的变体。欧几里得在《几何原本》中用辗转相除法求最大公约数,而《九章算术》用的是辗转相减法。两种方法在本质上等价,只是操作方式不同。辗转相减法的优势在于它只需要减法运算,不需要除法,这在没有便捷除法工具的时代是一个实际的优势。
值得注意的是,辗转相减法不仅用于约分,在《九章算术》的“粟米章”中,它还被用于处理各种比例换算问题。当不同物品之间的兑换比例不是整数时,需要通过“齐同”来找出共同的比较基准,而这个过程就涉及约分与通分的反复运用。
通分在《九章算术》中通过“齐同术”来实现。齐同术的核心思想是:两个比例要能够比较,必须先让它们有共同的“等份”。例如,比较 $\frac{2}{3}$ 和 $\frac{3}{4}$ 的大小,需要把它们化为 $\frac{8}{12}$ 和 $\frac{9}{12}$,这样就能直接比较分子。
通分的方法是让两个分母相乘得到新的分母,同时让分子乘以另一个分数的分母。这个过程在合分术中已经隐含了。关键在于理解“齐”的含义——它不仅指分母相同,还指分数所代表的“率”的意义保持不变。当 $\frac{2}{3}$ 变成 $\frac{8}{12}$ 时,“2份相对于3份”的关系变成了“8份相对于12份”,但这个比例关系本质上没有改变。
分数运算律的发现
当我们学习现代代数的运算律时,经常会看到“加法满足交换律和结合律”、“乘法满足交换律和结合律”、“乘法对加法满足分配律”这样的表述。这些定律描述的是运算的基本属性。
那么,分数运算是否满足这些运算律呢?
从现代数学的角度看,分数加法和乘法都满足交换律和结合律。但《九章算术》的分数理论并不以这些定律的形式呈现——它的重点是算法和计算,而不是抽象的定律表述。但这并不意味着古人没有注意到运算中的特殊性质。
一个值得注意的现象出现在减法与除法的不满足交换性上。当我们计算 $\frac{3}{4} - \frac{1}{2}$ 和 $\frac{1}{2} - \frac{3}{4}$ 时,第二个算式的结果可能是负数,而第一个算式的结果是正数。在《九章算术》的语境中,这种差异通过“母互乘子,以少减有”的表述被明确处理——“少”和“有”的区分正是为了处理运算结果的正负问题。
除法的不满足交换性更为明显。$\frac{3}{4} \div \frac{1}{2} = \frac{3}{2}$,而 $\frac{1}{2} \div \frac{3}{4} = \frac{2}{3}$,这两个结果互为倒数。在经分术中,这种不满足交换性被嵌入到了算法的结构中:颠倒相乘这一步直接导致了除法结果的倒数关系。
《九章算术》是否意识到这些性质呢?从文本来看,它没有明确提出“运算律”的概念,但通过算法的设计,巧妙地处理了这些性质可能带来的问题。例如,减分术要求“先比较大小再相减”,这实际上是对减法非交换性的一种规范化处理,确保所有减法运算的结果都是非负的。
另一个有趣的话题是结合律的问题。当我们计算三个分数的加法时,$(\frac{a}{b} + \frac{c}{d}) + \frac{e}{f}$ 和 $\frac{a}{b} + (\frac{c}{d} + \frac{e}{f})$ 是否相等?在现代数学中,答案显然是肯定的。但《九章算术》如何验证这一点呢?
古人的方法是通过具体的数值计算来检验。他们会选取不同的数值代入公式,看看结果是否一致。如果一致,就认为算法是正确的;如果出现不一致,就会修改算法。这种“算例验证”的方法在《九章算术》中多次出现。例如,在证明合分术的正确性时,书中会先用特例验证,然后用更一般的情形来说明算法的普遍性。
从分数到小数:中国古代的小数表示法
在现代数学中,分数和小数是同一类数的两种不同表示形式。我们知道,每个分数都对应一个唯一的小数表示(可能是有限的,也可能是无限循环的)。那么,《九章算术》中是否有小数的概念呢?
答案是有,但表现方式与今天完全不同。
《九章算术》的基本数量单位是整数。但当除法不能整除时,结果就会产生“余数”。对于余数的处理,《九章算术》采用了两种方式。第一种是保留分数形式,这我们已经讨论过了。第二种是引入更小的单位。
例如,在“粟米章”中,经常出现这样的问题:“今有粟三斛七斗五升二十三合,问为米几何?”这里的“斛、斗、升、合”构成了一个十进制的单位体系。1斛=10斗,1斗=10升,1升=10合。如果计算结果产生余数,就可以用更小的单位来表示。
这种表示方式实际上是后世小数表示法的雏形。到了公元3世纪,刘徽在注释《九章算术》时,明确提出了“以十命之”的方法——用“分”、“厘”、“毫”、“丝”等名称来表示小于“寸”的长度单位。这些名称与后来的小数位名称“分、厘、毫、丝、忽”几乎完全对应。
刘徽还进一步发展了分数与十进制之间的关系。他指出,当分母是10的幂次时,分数可以直接转化为小数形式。例如,$\frac{7}{10}$ 升可以表示为七分升,$\frac{3}{100}$ 升可以表示为三厘升。这种转化不需要特殊的算法,只需要把分子写在相应的小数位置上即可。
更重要的是,刘徽发现了一个关键事实:任何分数都可以表示为有限小数或无限循环小数。对于后者,他提出了用不足近似和过剩近似来逼近真实值的方法。例如,要计算 $\sqrt{2}$,可以用一系列分数来逐步逼近它。这种思想后来在祖冲之的工作中得到了完美体现——他计算出圆周率介于 $\frac{355}{113}$ 和 $\frac{22}{7}$ 之间。
$\frac{355}{113}$ 是一个非常精确的圆周率近似值,它的十进制表示是3.1415929204...,与真值的误差只有约 $2.7 \times 10^{-7}$。这个近似保持了分数的形式,但在实际计算中可以被转换为小数使用。
算法流程与现代运算的对应
为了更清晰地展示《九章算术》分数算法的核心步骤,我们可以将其与现代分数运算进行对照。以下流程图展示了分数四则运算中古代算法与现代方法的对应关系:
```mermaid flowchart TD A["输入分数对<br/>a/b 与 c/d"] --> B{运算类型}
B -->|加法| C["合分术"] B -->|减法| D["减分术"] B -->|乘法| E["乘分术"] B -->|除法| F["经分术"]
C --> G["母互乘子<br/>ad 与 cb"] D --> H["母互乘子<br/>ad 与 cb"] E --> I["子相乘 ac<br/>母相乘 bd"] F --> J["颠倒相乘<br/>ad 与 bc"]
G --> K["并为实: ad+cb"] H --> L["以少减有<br/>求差值"] I --> M["ac 为实<br/>bd 为法"] J --> N["ac 为实<br/>bd 为法"]
K --> O["母相乘为法: bd"] L --> O M --> P{"需要约分?"} N --> P
O --> P P -->|是| Q["更相减损术<br/>求最大公约数"] P -->|否| R["输出结果"]
Q --> S["除以最大公约数"] S --> R
style C fill:#e1f5fe style D fill:#e1f5fe style E fill:#e1f5fe style F fill:#e1f5fe style Q fill:#fff3e0 ```
观察这个流程,可以发现一个有趣的规律:无论哪种运算,最终都需要进行分子分母的乘法运算,然后根据是否需要约分来决定是否使用更相减损术。 这意味着《九章算术》的分数算法虽然在表述上分为四种,但实际上共享相同的基本操作模块。
加法和减法的核心是“母互乘子”,这一步完成了通分;乘法的核心是“子相乘为实,母相乘为法”,这一步直接给出结果;除法的核心是“颠倒相乘”,这一步把除法转化为乘法来处理。
实践:运用《九章算术》算法计算复杂表达式
理论需要通过实践来巩固。让我们用《九章算术》的算法来计算一个稍微复杂的表达式,以体会古人算法的精妙之处。
问题:计算 $\left(\frac{3}{4} + \frac{5}{6}\right) \times \frac{2}{3} - \frac{1}{2}$
我们按照《九章算术》的风格,逐步计算。
第一步:合分——计算 $\frac{3}{4} + \frac{5}{6}$
根据合分术:母互乘子,并以为实,母相乘为法。
- 分子:$3 \times 6 + 5 \times 4 = 18 + 20 = 38$
- 分母:$4 \times 6 = 24$
所以 $\frac{3}{4} + \frac{5}{6} = \frac{38}{24}$
检查是否需要约分:用更相减损术求38和24的最大公约数。
- $38 - 24 = 14$,得到(24, 14)
- $24 - 14 = 10$,得到(14, 10)
- $14 - 10 = 4$,得到(10, 4)
- $10 - 4 = 6$,得到(6, 4)
- $6 - 4 = 2$,得到(4, 2)
- $4 - 2 = 2$,得到(2, 2)
最大公约数是2,约分后得 $\fr