∫π每天一道数学题
← 返回孙子算经
孙子算经 · 第 37 讲 · 2026-10-23 · 约 12 分钟

三人持钱——一场对话解出的三元方程组

甲乙丙三人持钱。甲说:把你们俩的一半给我,我就有九十。乙说:把你们俩的一半给我,我就有七十。丙说:把你们俩的一半给我,我就有五十六。问三人原各持多少?答曰甲七十二、乙三十二、丙四。这是《孙子算经》里最接近现代方程的一道题——三句话列出三个方程,解一个三元一次方程组。

原典

今有甲乙丙三人持钱,甲语乙丙:各将公等所持钱半以益我,钱成九十。乙复语甲丙:各将公等所持钱,半以益我,钱成七十。丙复语甲乙:各将公等所持钱,半以益我,钱成五十六。问:三人元持钱各若干?

答曰:甲七十二,乙三十二,丙四。

术曰:先置三人所语为位,以三乘之,各为积,甲得二百七十,乙得二百一十,丙得八十四,又置甲九十,乙七十,丙五十六,各半之,以甲乙减丙,以甲丙减乙,以乙丙减甲,即各得元数。

白话翻译

甲乙丙三人各持一些钱。甲对乙、丙说:把你们两人钱数的一半加给我,我就有九十文。乙对甲、丙说:把你们两人钱数的一半加给我,我就有七十文。丙对甲、乙说:把你们两人钱数的一半加给我,我就有五十六文。问三人原本各持多少?

答案是:甲七十二文,乙三十二文,丙四文。

术文的算法是:先把三人说的话各自乘三,得甲二百七十、乙二百一十、丙八十四;再把 90、70、56 各取一半,用「甲乙减丙、甲丙减乙、乙丙减甲」的方式相减,就得到三人的原钱数。

这段术文极其凝练,几乎没法直接读懂。 但把它翻成今天的方程,一切水落石出。

示意图

三人持钱:三句话对应三个方程,解出甲72 乙32 丙4

图:三句话各列一式,相加即得总数 108;再逐式相减,分别解出三人

古人的算法

先把三句话翻成数学语言。设甲、乙、丙原有钱数为 AA、BB、CC。

甲说「你们俩的一半加给我,我有九十」:

A+B2+C2=90(1)A + \frac{B}{2} + \frac{C}{2} = 90 \qquad (1)

乙、丙同理:

B+A2+C2=70(2)B + \frac{A}{2} + \frac{C}{2} = 70 \qquad (2) C+A2+B2=56(3)C + \frac{A}{2} + \frac{B}{2} = 56 \qquad (3)

关键操作:三式相加。 左边每个变量各出现三次(一次作为自己,两次作为别人的一半),所以

(A+B+C)+12(A+B+C)+12(A+B+C)=2(A+B+C)(A + B + C) + \frac{1}{2}(A+B+C) + \frac{1}{2}(A+B+C) = 2(A+B+C)

等等——仔细数:AA 在
(1) 出现一次(系数 1)、在
(2) 出现 12\frac{1}{2}、在
(3) 出现 12\frac{1}{2},共 1+12+12=21 + \frac12 + \frac12 = 2 次。同理 BB、CC 也各出现 2 次。所以

2(A+B+C)=90+70+56=2162(A+B+C) = 90 + 70 + 56 = 216 A+B+C=108A + B + C = 108

术文「以三乘之,得二百七十」——不对吧?90×3=27090 \times 3 = 270。啊,这就是术文的另一条路:它把每句话乘 3,得到的是

3A+32B+32C=2703A + \frac{3}{2}B + \frac{3}{2}C = 270

整理:3×(A+B+C2)=2703 \times (A + \frac{B+C}{2}) = 270,即 3A+32(B+C)=2703A + \frac{3}{2}(B+C) = 270。这其实是「三倍后的方程」,用来消去分母(原始式子里有 12\frac12,乘 2 或乘 3 都能化整)。

术文接着说「各半之,以甲乙减丙,以甲丙减乙,以乙丙减甲」。换成今天的话:

第一步,求总数。 由
(1)
(2)(3) 相加(或等价地,把 270、210、84 相关信息代入):

A+B+C=108A + B + C = 108

第二步,逐人求解。 拿总数减去「另外两人的一半之和」:

由
(1):A+108−A2=90A + \frac{108 - A}{2} = 90,即 A+54−A2=90A + 54 - \frac{A}{2} = 90,故 A2=36\frac{A}{2} = 36,A=72A = 72。

由
(2):B+54−B2=70B + 54 - \frac{B}{2} = 70,B2=16\frac{B}{2} = 16,B=32B = 32。

由
(3):C+54−C2=56C + 54 - \frac{C}{2} = 56,C2=2\frac{C}{2} = 2,C=4C = 4。

验证:72+32+4=10872 + 32 + 4 = 108 ✓

代入
(1):72+32+42=72+18=9072 + \frac{32+4}{2} = 72 + 18 = 90 ✓ 代入
(2):32+72+42=32+38=7032 + \frac{72+4}{2} = 32 + 38 = 70 ✓ 代入
(3):4+72+322=4+52=564 + \frac{72+32}{2} = 4 + 52 = 56 ✓

三式全合,答案无误。

现代数学视角

这是最标准的三元一次方程组,今天初中就学:

{A+12B+12C=9012A+B+12C=7012A+12B+C=56\begin{cases} A + \frac{1}{2}B + \frac{1}{2}C = 90 \\ \frac{1}{2}A + B + \frac{1}{2}C = 70 \\ \frac{1}{2}A + \frac{1}{2}B + C = 56 \end{cases}

解法的现代版:先化整(各乘 2),再用加减消元:

{2A+B+C=180A+2B+C=140A+B+2C=112\begin{cases} 2A + B + C = 180 \\ A + 2B + C = 140 \\ A + B + 2C = 112 \end{cases}

三式相加:4(A+B+C)=4324(A+B+C) = 432,故 A+B+C=108A+B+C = 108。

分别用第一式减第二式……等等,这里更简洁:第一式减去「A+B+C=108A+B+C=108」,得 A=72A = 72;第二式减总数,得 B=32B = 32;第三式减总数,得 C=4C = 4。

术文的「以三乘之」是另一条路:它没把分数化掉,而是直接乘 3——这让人想到矩阵的初等变换。术文随后的「各半之,以甲乙减丙……」,翻译过来正是加减消元法:用一个方程减另一个方程,消去一个未知量。

值得一提的是线性结构:方程组的系数矩阵

(112121211212121)\begin{pmatrix} 1 & \frac12 & \frac12 \\ \frac12 & 1 & \frac12 \\ \frac12 & \frac12 & 1 \end{pmatrix}

是「对角线为 1、其余为 12\frac12」的对称矩阵,三式相加时每列的和恰好是 2,所以总数立即可得。古人不懂矩阵,但他们挑的这道题,结构上是最容易解的那一类。

高中课本关联

三元一次方程组:高中数学学业水平考试要求掌握。本题是「三句话列三式」的完整范例——从文字到方程这一步,恰是学生的难点。

方程思想:「设未知数、列方程、解方程、验算」四步,本题一样不少。验算尤其重要:三个答案都要代回原话检查。

对称结构:方程组系数对称,解法因此可以很简洁。今天讲「利用对称性简化计算」,本题是最好的例子——三式相加是标准动作。

古算与代数的对照:《九章算术》「方程」章是世界上最早的系统线性方程组解法,比印度早 600 年、比欧洲早 1000 多年。让学生了解这条脉络,能具体感受到中国古代数学的高度。

思考与拓展

  1. 算一算:设甲、乙、丙为 AA、BB、CC,列出三个方程;化整后相加求 A+B+C=108A+B+C=108;再分别求出 72、32、4;最后代回三句话逐一验证。

  2. 换数字:若三句话分别为「成一百」「成八十」「成六十」,问三人原持多少?(提示:A+B+C=(100+80+60)×24A+B+C = \dfrac{(100+80+60)\times 2}{4},再用同样方法。)

  3. 改条件:若甲说「把你们俩全部给我」(而非一半),我有一百,其他两句不变,方程组如何变化?还好解吗?

  4. 四人版:若加入丁,丁说「把你们仨的一半给我,我有四十」,其他三人话语不变,能否仍用「相加」的技巧快速求出四人总和?

  5. 验算练习:只给你答案 72、32、4,请代回三句话,说明它们为什么满足条件。若把 72 改成 70,哪一句话会不成立?

一句话总结

三句话、三个方程、一次相加、三次相减——两千年前的算家已经会解三元一次方程组,而且解得比今天的标准解法还简洁。

— Y. · 2026-10-23