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

筑城计功——古代土建工程怎么排工期

筑城上广二丈、下广五丈四尺、高三丈八尺、长五千五百五十尺,秋程人功三百尺,问须功几何?答曰二万六千一十一功。这是《孙子算经》里最像现代工程预算的一道题:算体积、定定额、除一下就得人数。两千年前的工部长官,用的就是今天造价工程师的算法骨架。

原典

今有筑城,上广二丈,下广五丈四尺,高三丈八尺,长五千五百五十尺,秋程人功三百尺。问:须功几何?

答曰:二万六千一十一功。

术曰:并上下广,得七十四尺,半之,得三十七尺,以高乘之,得一千四百六尺,又以长乘之,得积七百八十万三千三百尺,以秋程人功三百尺除之,即得。

白话翻译

要修筑一段城墙:顶部宽二丈,底部宽五丈四尺,高三丈八尺,长五千五百五十尺。秋季规定每个劳工的日工作量是三百立方尺。问需要多少个「功」?

答案是:二万六千零一十一功。

术文给的算法是:把上广与下广相加,得七十四尺;取半,得三十七尺(平均宽度);乘高三丈八尺,得一千四百零六平方尺(横截面积);再乘长得总体积七百八十万零三千三百立方尺;最后用每人秋季定额三百立方尺除,得到功数。

这道题的结构跟今天修路、挖沟的工程量清单一模一样:确定截面形状 → 算截面积 → 乘长得体积 → 按定额折算人工。两千年前的算法骨架,今天一个字都不用改。

示意图

筑城计功:梯形截面、体积、定额三步

图:(20+54)÷2 = 37 尺均宽 × 38 尺高 = 1406 平方尺 × 5550 尺 = 7,803,300 立方尺 ÷ 300 = 26011 功

古人的算法

术文五步,每步都能对账。

第一步,并上下广。

20+54=74 尺20 + 54 = 74\ \text{尺}

上广二丈 = 20 尺,下广五丈四尺 = 54 尺。注意这里统一了单位再相加——古人实务中常这样,先把「丈」化成「尺」,避免混算。

第二步,半之得均宽。

74÷2=37 尺74 \div 2 = 37\ \text{尺}

这就是第 24 讲堤坝用过的手法——梯形截面的中位线。城墙正是梯形截面(上窄下宽才稳)。

第三步,乘高得截面积。

37×38=1406 平方尺37 \times 38 = 1406\ \text{平方尺}

验算:37×38=37×(40−2)=1480−74=140637 \times 38 = 37 \times (40 - 2) = 1480 - 74 = 1406。

第四步,乘长得体积。

1406×5550=7803300 立方尺1406 \times 5550 = 7803300\ \text{立方尺}

验算:1406×5550=1406×5000+1406×550=7030000+773300=78033001406 \times 5550 = 1406 \times 5000 + 1406 \times 550 = 7030000 + 773300 = 7803300。

第五步,以人功除之。

7803300300=26011 功\frac{7803300}{300} = 26011\ \text{功}

一步不余,正好整除。 古人编题时显然调过数——让 78033007803300 恰好是 300300 的倍数,省去分数的麻烦。这类「凑整除」在第 23 讲(216 = 27×8)也见过,是中算书编例题的常见手法。

「秋程人功三百尺」是个定额。 春、夏、秋三季日照长短不同,体力消耗不同,能出的工量也不同,所以《九章算术》按季节分别定程。本题取的是秋季定额。

现代数学视角

把术文抽象出来,就是一条工程公式:

N=1定额×(a+b)h2×LN = \frac{1}{\text{定额}} \times \frac{(a+b)h}{2} \times L

其中 aa、bb 是上下宽,hh 是高,LL 是长。今天的定额不叫「人功三百尺」,叫「人工消耗量指标」(单位:工日/立方米),但作用是同一件事:把工程量换算成人工,再换算成工期和钱。

现代造价的三步:算量(本题的体积)→ 套定额(本题的三百尺)→ 计价(本题没有,但工程上必须算)。古人停在了第二步——他们算的是「须功几何」,即需要多少个工日;再往下就进入钱粮调度,那是官府会计的范畴了。

为什么定额要分季节:秋季天高气爽,出工效率最高;夏季酷暑,每人能出的工量就低。同一个人、同一把工具,不同季节产出的立方尺数不一样。今天的定额也按冬雨季施工增加费调整,思路一致。

城墙体积有多大:780 万立方尺。按一尺约 0.23 米(秦汉尺)折算,约合 9500 立方米土方——相当于今天三四栋楼的土方开挖量。用 26011 个工日,一个工日一方土左右,这个效率放到今天也不算离谱。

高中课本关联

柱体体积与梯形面积:城墙是「梯形截面的棱柱」,体积 = 截面积 × 长度。这是 V=ShV = Sh 的一般形式,本题给了它最实用的场景。

工程应用题:高考数学里有大量「造价、租金、材料最省」型的优化题,本题是其古代原型。可以让学生试着改条件:若上广增大,土方量怎么变?若高度不变、长度加倍,功数如何?(都是线性关系,但每一项的系数不同。)

单位换算的实务:题目里同时出现丈、尺两种单位,术文先统一成尺再算。这正是今天强调的「先统一单位再运算」。

四舍五入与整除:7803300÷3007803300 \div 300 正好整除。可以追问:如果体积多出 1 立方尺,该怎么办?古人会怎么记?(答案:余数成分数,或并入下一位。)这引出「取整规则」的话题——现代工程预算里,这个规则是明文规定的。

思考与拓展

  1. 算一算:按术文五步完整算:并广 74、半之 37、乘高 1406、乘长 7803300、除定额 300 得 26011。每步都要写中间数。

  2. 改定额:若改为春季人功二百尺,问须功几何?比秋季多还是少?为什么?

  3. 改尺寸:若城墙长度改为五千步(15000 尺),其他不变,功数是多少?长度与功数成什么关系?

  4. 优化题:城墙截面必须容纳 1406 平方尺(否则不牢固)。若上广固定为 2 丈,下广与高可以调——下广增大同时减小高度,能否保持面积不变?这在实际工程中有什么意义?

  5. 换算现代:查一下秦汉一尺约 0.231 米,把本题体积换算成立方米。再假设现在一个工人一天挖 1.2 立方米,问需要多少工日?与古法的 26011 功比,效率差多少?

一句话总结

梯形截面乘长得体积,除以季节定额得人工——古代算的是二万六千零一十一功,今天造价表上写的,还是同一套逻辑。

— Y. · 2026-10-18