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

不定方程(一)——鸡兔同笼与方程组

鸡兔同笼是最经典的不定方程问题。已知头和脚的数量,求鸡兔各几何?古人用"盈不足术"巧妙地避开了代数符号,直接给出算术解法。

原典

今有雉兔同笼,上有三十五头,下有九十四足。问:雉、兔各几何?

答曰:雉二十三,兔十二。

术曰:上置三十五头,下置九十四足。以足减半,得一十七。以少减多,加头中,得兔。其余为雉。

——《孙子算经·卷下》

这道题说的是什么

笼子里有鸡和兔子,数了数脑袋——35 个;数了数脚——94 只。问:鸡有多少只?兔有多少只?

答案是:鸡 23 只,兔 12 只。

验证:23 + 12 = 35 头 ✓,23 × 2 + 12 × 4 = 46 + 48 = 94 足 ✓

示意图

鸡兔同笼示意图:35个头,94只脚,鸡兔各几何

鸡兔同笼:已知总头数和总脚数,求鸡兔各几何

数学原理

1. 现代代数解法

设鸡有 xx 只,兔有 yy 只。

{x+y=352x+4y=94(1)\begin{cases} x + y = 35 \\ 2x + 4y = 94 \end{cases} \qquad (1)

由第一个方程:x=35−yx = 35 - y,代入第二个方程:

2(35−y)+4y=942(35 - y) + 4y = 94 70−2y+4y=9470 - 2y + 4y = 94 2y=242y = 24 y=12y = 12 x=35−12=23x = 35 - 12 = 23

2. 古人的"盈不足术"

术文说:"以足减半,得一十七。以少减多,加头中,得兔。其余为雉。"

让我逐句拆解:

"以足减半,得一十七":94 ÷ 2 = 47。等等,术文说"得一十七",不是 47。再读:可能是"以足减半"指的是另一种操作。

实际上,术文的正确理解是:

"置三十五头": heads = 35 "置九十四足": feet = 94 "以足减半":94 ÷ 2 = 47(每只动物至少 2 只脚,先假设全是鸡) "以少减多,加头中":这里"少"指头数 35,"多"指足半 47?不,应该是 47 - 35 = 12,这就是兔数。

验证:47 - 35 = 12 只兔,35 - 12 = 23 只鸡。✓

为什么这样算?设想每只动物都被"减半"——鸡变成 1 只脚,兔变成 2 只脚。那么 94 只脚减半后变成 47"半脚单位"。如果全是鸡,应该只有 35 个单位;多出来的 47 - 35 = 12,就是兔的额外贡献(每只兔多 1 个单位)。所以兔有 12 只。

3. 一般公式

对于"头的总数为 HH,脚的总数为 FF"的问题:

兔数=F2−H\text{兔数} = \dfrac{F}{2} - H 鸡数=H−兔数\text{鸡数} = H - \text{兔数}

这个公式成立的前提是 FF 为偶数,且 F/2≥HF/2 \geq H(否则无解)。

4. 为什么叫"盈不足术"

盈不足术的核心思想是"假设—调整":先假设所有动物都是鸡(足最少的),计算出"不足"的脚数,然后逐步将鸡换成兔(每次换增加 2 只脚),直到补足为止。

本题中:

  • 假设 35 只全是鸡:应有 70 只脚
  • 实际有 94 只脚:多出 24 只脚
  • 每将一只鸡换成兔,脚数增加 2
  • 需要换 24÷2=1224 \div 2 = 12 只

所以兔 12 只,鸡 23 只。

古人的算法

术文的操作步骤(筹算实现):

  1. 置头三十五于上:在算筹布局的上排放 35
  2. 置足九十四于下:在下排放 94
  3. 以足减半:94 ÷ 2 = 47
  4. 以少减多:47 - 35 = 12(兔数)
  5. 其余为雉:35 - 12 = 23(鸡数)

现代数学视角

鸡兔同笼问题是一个二元一次方程组的特例。更一般地,任何形如:

{a1x+b1y=c1a2x+b2y=c2\begin{cases} a_1 x + b_1 y = c_1 \\ a_2 x + b_2 y = c_2 \end{cases}

的方程组都可以用消元法或代入法求解。

鸡兔同笼的特殊性在于系数非常简单:a1=b1=1a_1 = b_1 = 1,a2=2a_2 = 2,b2=4b_2 = 4。这种特殊结构使得算法可以大大简化,不需要一般的消元步骤。

从线性代数的角度看,这是一个二维平面上的两条直线的交点问题。两条直线不平行(系数不成比例),所以有唯一解。

高中课本关联

二元一次方程组(七年级)

鸡兔同笼是二元一次方程组的经典应用题。学生学习代入消元法和加减消元法。

一元一次方程(七年级)

也可以转化为一元一次方程:设兔有 xx 只,则鸡有 35−x35 - x 只,列方程 4x+2(35−x)=944x + 2(35 - x) = 94。

数学建模(高中)

鸡兔同笼问题是数学建模的入门案例——将实际问题抽象为方程组,求解后再验证结果的实际意义。

思考与拓展

第1题:鸡兔同笼,头 35,脚 94。如果脚数是 100,答案是多少?如果脚数是 80,答案是多少?什么情况下无解?

第2题:和尚分馒头问题。100 个和尚分 100 个馒头,大和尚每人分 3 个,小和尚每 3 人分 1 个。问大、小和尚各多少人?

提示:设大和尚 xx 人,小和尚 yy 人。x+y=100x + y = 100,3x+y/3=1003x + y/3 = 100。解得 x=25x = 25,y=75y = 75。

第3题:证明——对于鸡兔同笼问题,如果头的总数为 HH,脚的总数为 FF,则解存在的充要条件是:FF 为偶数,且 2H≤F≤4H2H \leq F \leq 4H。

第4题:扩展——如果有鸡、兔、鸭三种动物,已知头的总数和脚的总数,能否唯一确定每种动物的数量?为什么?

一句话总结

鸡兔同笼问题用"假设—调整"的思路,将二元方程组转化为一步算术运算——这是中国古代数学"以简驭繁"的典范。

— Y. · 2026-11-13
不定方程(一)——鸡兔同笼与方程组 · 孙子算经第55讲