糳米与御米:一次约分省掉一半力气
今有粟四斗五升,问为糳米几何?答曰二斗一升五分升之三。这道题的数字比上一讲大,术文也多出一个动作——「以二约」。把率先除以二,乘出来的数小一半,除起来也省一半力气。两千年前的算家,已经在用约分让计算变简单了。
原典
今有粟四斗五升。问:为糳米几何?
答曰:二斗一升五分升之三。
术曰:置粟四十五升,以二约糳米率二十四,得一十二,乘之,得五百四十升,为实;以二约粟率,五十得二十五,为法,除之,不尽,以等数约之,而命分。
白话翻译
有粟四斗五升。问能换多少糳米(舂过一遍的精米)?
答案是:二斗一升又五分之三升。
术文给的算法是:把粟按四十五升计,拿二约糳米率二十四,得十二,乘上去得五百四十升作为被除数;再拿二约粟率五十,得二十五,作为除数;除完若不尽,用等数(最大公约数)约分,再用分数记出结果。
注意术文比上一讲多了「以二约」三步。 这不是冗余——它让乘出来的是 540 而不是 1080,除的是 25 而不是 50。在算筹上,数字小一半,摆筹、乘法、除法全都省力。
示意图
古人的算法
第一步,统一单位。 四斗五升 = 四十五升。
第二步,约分。 术文说「以二约糳米率二十四,得一十二」「以二约粟率,五十得二十五」。也就是
为什么可以这么做? 因为整个算法是「乘一个率、除另一个率」,分子分母同时除以同一个数,比值不变:
这就是约分。 古人不写等式,只写在算筹上怎么省力——但他们确实懂这个性质。
第三步,乘得实。
术文「得五百四十升」。
第四步,除得商。
术文说「不尽,以等数约之,而命分」——除不尽,就用最大公约数化简分数,最后记成「」。
换成复名数: 升 = 21 升 + 0.6 升。21 升是二斗一升(1 斗 = 10 升),0.6 升是「五分升之三」(一升的五分之三)。合起来正是答曰「二斗一升五分升之三」。
验算:
两条路径都得 21.6 升,与答曰一致。
出米率这回是:
比粝米的 60% 低了——因为糳米舂得更精,损耗更大。
现代数学视角
用今天的记号,这道题就是
约分是标准的化简步骤:
于是 升。
术文的「以二约」正是在做这一步。 值得跟学生强调的是:约分不改变结果,但改变计算量。在算筹时代,把 1080 与 50 换成 540 与 25,意味着摆筹少一半、心算负担小一半。这是数学技巧服务于计算效率的早期范例。
「以等数约之,而命分」这句话更重要。它的意思是:除不尽时,先求分子分母的最大公约数,化到最简,再用分数记出。这正是今天分数运算的规范步骤——先约分,后表示。古人已经把它写进术文,作为通用规则。
换算成复名数的逻辑:21.6 升,整数部分 21 拆成「2 斗 1 升」(逢十进一斗),小数部分 0.6 记成「五分升之三」(一升分成五份取三份)。这是古代处理小数的标准办法——不用小数点,用下一级单位加分数。
高中课本关联
约分与最简分数:,。这是最基础的分数化简,本题给出了一个真实的动机——省算力。
分数与除法的关系:。分数就是除法的另一种写法,本题把两者的衔接演示得清清楚楚。
正比例与百分比: 升。把古代的率翻译成百分数,古今数学立刻对接。
复名数与小数的等价:21.6 升 = 二斗一升五分升之三。让学生换算几组(如 33.18 升 = 三斗三升一合八勺),体会「逢十进一」与「十分之一」的对应。
思考与拓展
-
算一算:不约分直接算 ,再约分算 ,比较两个过程。哪个摆筹更省?差了百分之几的工作量?
-
换算验算:把 升换算成「二斗一升五分升之三」,说明每一级(斗、升、分)分别怎么来。
-
改数据:若粟改为六斗(60 升),问得糳米几何?(答案: 升,即二斗八升五分升之四。)
-
三米对比:粝米率 30、糳米率 24、御米率 21,出米率分别是 60%、48%、42%。若三种米各要得 10 升,各需粟多少升?三者相差几何?
-
为什么要约:术文说「不尽,以等数约之,而命分」。请解释:若最后得到 ,不约分直接写成「二十五分之五百四十」行不行?为什么古人要化到 ?
一句话总结
45 乘 12 除 25,跟 45 乘 24 除 50 本是一回事——以二约,约的是数字的大小,不是答案。