除法竖式从哪来?从古埃及分面包到现代计算机的算法进化史 简介一份专门讲解“除法由来”的docx资料面向数学史爱好者、中小学教师及学生能帮助读者快速厘清除法在中国古代从实用工具到理论总结的完整脉络。压缩包内仅1个Word文档体积13KB内容精炼适合地铁或课前快速阅读。目前已有187人学习浏览。文档从先秦时代甚至更早的应用切入重点梳理《筭数书》中除法表现的七类十九种方法、五十五条规则解释算筹与口诀如何使高难度除法变得简单并引用《孙子算经》‘凡除之法与乘正异’说明古人对乘除本质区别的洞察同时延伸到汉代《算数书》、唐代《缉古算经》对比例计算等复杂概念的发展。通读下来读者不仅能了解除法在土地划分、粮食计算与商品交换中的早期价值更能感受到中国古代数学从生活走向理论、最终影响后世教育的积累与传承。 带孩子写数学作业时撞上除法竖式很多家长都会用“除法就是平均分”来给孩子打底。可当孩子追问一句“那除法是什么时候发明的为什么跟乘法长得那么不一样”时大多数人就卡住了。对数学老师来说这也是一个特别容易让课堂亮起来的切入点——除法不是天生就长成今天这样的它从“分东西”这个朴素动作出发走了几千年才变成我们熟悉的竖式。而这趟历史旅程里藏着的恰恰是理解除法本质、排除常见计算错误、甚至跟孩子解释“为什么不能除以0”的最佳钥匙。这篇文章想做的事情很简单把除法的身世彻底讲透。从古埃及人怎么分面包、古巴比伦人怎么做倒数表到算筹里的“商除”、算盘口诀再到现代竖式的定型每一步都对应着一种数学观念的突破。不管你是想给自己补一段数学文化背景还是备课找素材又或者只是想搞清楚“除法为什么这么难教”这篇文章都能给你一套能直接用的干货。1. “除法的难产”背后它和加减乘根本不在一个难度层很多人没意识到一个问题加法、减法、乘法在人类历史上几乎是同步出现的因为交易、计数、丈量这些日常活动本身就要用。但除法完全不一样——它是所有基础运算里最晚成型、最难统一表达的一个。原因也不复杂。加法是把两个集合合并减法是从集合里拿走一部分乘法是重复加法——这些动作都能直接对应到实物操作上。除法对应的却是“把一个整体重新拆开”而且拆法还不止一种一种问“把12个苹果分给3个人每人几个”、另一种问“12个苹果每3个装一袋能装几袋”。这两种问法一个叫“等分除”、一个叫“包含除”结果一样但思维路径完全不同。正是这种双重身份让除法在很长时间里都找不到一个整齐划一的算法框架。更麻烦的是除法一旦算起来结果不一定是整数。“12÷3”看着简单但“12÷5”该怎么办小数概念没有成熟之前除法就始终卡在那里——算不尽的商、除不尽的余数这些今天看来稀松平常的东西对古人来说其实是巨大的认知障碍。所以要理解除法的由来得先接受一个前提除法不是被“发明”出来的而是被不同文明在各自的需求里“逼”出来的。古埃及被税收和分地逼着走古巴比伦被天文和利息逼着走中国被工程和商业逼着走。路径不同算法自然五花八门。2. 四条不同的“除法之路”古埃及、古巴比伦、古中国、古印度各自怎么算聊除法的历史最容易踩的坑就是用今天的眼光去看古代算法觉得它们又笨又绕。真实情况恰恰反过来——每种古算法都精准地适配了当时的记数系统和工具条件。工具决定了算法这是理解数学史的一条铁律。2.1 古埃及用“翻倍”硬拆所有除法都是连加古埃及的除法思路在今天看来非常奇特他们不直接算“商是多少”而是用一组“翻倍表”来凑出答案。莱因德纸草书上有一道经典问题把9个面包分给10个人。现代人会直接写9÷100.9但古埃及人关心的是另一个问题——每个人能拿到几个“单位分数”的组合。于是他们把10的一半和5的翻倍关系列出来反复试凑最终给出“2/31/51/30”这种答案其中2/3、1/5、1/30都是分子为1的分数。这个方法的核心是任何整数都可以用“翻倍”和“取半”凑出来。比如算“某数除以12”古埃及人会观察12可以拆成84而8和4都是某数一次次翻倍产生的项于是除法就被转化成了几个乘法和加法的组合。整个过程不需要“试商”只需要不停翻倍、不停对照机械到几乎不会出错。我们现在做除法用竖式本质上也是在做“拆数”——把除数拆成若干份去凑被除数。古埃及人拆得更直白他们连“除法”这个概念都没有单独定义而是把每次除法都看成“乘回原数的逆过程”。思维绕一点但逻辑自洽。2.2 古巴比伦倒过来算用“乘倒数”替代除法如果说古埃及是用加法思维解决除法那古巴比伦人走的完全是另一条路既然除以n跟乘以1/n是一回事那就先把所有除数的倒数算好除的时候直接查表。今天在数学史上极有名的一块泥板“倒数表”存在于约公元前2000年把60进制下的60、30、20、15、12、10、6这些“规则除数”的倒数一一列出比如1/60、2/60、3/60对应今天的1、1/30、1/20。算出结果为整数或有限小数的倒数就放进表里常备算不尽的就不做表换别的数处理。这个思路有一个很关键的副产品古巴比伦人因为要频繁处理倒数表反而比同时期的其他文明更早接触到了“小数位值展开”的思想甚至能在泥板上精确计算平方根近似值。比如他们算√2会把它写成124/6051/60²10/60³这样的60进制展开误差小到令人吃惊。放到今天来看古巴比伦人的“除化乘”思路一点都不过时。我们在Excel里写公式、在程序里做除法底层经常绕开除法器转成乘法加位移。历史绕了一个大圈最后还是回到最省算力的一条路上。2.3 古中国算筹摆出来的“商除”早就有了竖式的影子中国古代算筹的除法可能是今天现代竖式最直接的长辈。算筹是一根根小棍用不同摆法表示数字用一块板做草稿。古人在板上把被除数、除数和商摆成三行——上面是商中间是被除数下面是除数。一边摆一边算从左往右逐位移商乘减结合算完一位就把这一位划掉接着处理下一位。这套流程的本质跟今天的竖式除法几乎一模一样每一次都是在做“试商—乘法—减法—落下一位”的循环。差别仅在于算筹摆的是实物我们写的是数字算筹的“进位”靠挪动小棍的位置实现我们的“进位”靠写在更高数位的位置实现。《孙子算经》里“物不知数”问题虽然属于同余范畴但计算过程中的逐步拆解思路跟算筹除法的“逐位处理”逻辑一脉相承。值得一提的还有更晚出现的“归除法”在算盘上配合口诀运算比如“二一添作五逢二进一”。这些口诀把试商过程压缩成了条件反射熟练的算盘高手算起除法来速度完全不输现代计算器。口诀的实质是把常见除数尤其是一位数的所有商和余数组合预先算好算的当下只需机械执行。幼儿背乘法口诀跟古人背归除口诀本质上是同一个套路——用记忆换计算时间。2.4 古印度-阿拉伯的贡献记数法才是除法能统一的关键除法算法进化到竖式之前还缺一块最重要的拼图——十进制位值制记数法。古埃及数字是象形的写一大串符号费时费力罗马数字没有位值概念写大数极不方便用这些系统做除法光是写数就能耗掉大半精力更别指望形成通用算法。直到印度人完善了包含“0”的十进制位值记数法经阿拉伯世界传到欧洲除法才第一次找到了一个能“写下来”的形式化空间。一旦有了位值制竖式除法就变成了一件水到渠成的事试商、乘减、落位每一步都对应着明确的数位有没有进位、有没有借位一目了然。今天所有小学生学的长除法本质上就是用位值制把算筹的“摆棍子”过程翻译成了纸上的符号操作。工具变了算法思想两千年未变。3. 除法竖式是怎么一步步“长”成今天这样的很多人在教竖式的时候只把它当成一种计算工具很少问“为什么竖式偏偏长这样”。真去看历史你会发现竖式的每一步设计都有明确的功能需求没哪一步是多余的。3.1 中世纪欧洲的“海盗除法”竖式的又一个古老来源在欧洲除法的成熟要晚得多。罗马数字的记数系统严重阻碍了算术的发展直到12世纪左右阿拉伯数字和印度数学典籍大规模传入欧洲除法才迎来真正的转机。意大利数学家斐波那契在《计算之书》里详细介绍了多种除法方法其中有一种叫“海盗除法”也叫“帆船除法”的方法因为数字排列的形状像一艘船而得名。海盗除法的核心跟中国算筹很像被除数写在中间除数写在左边商写在最上面余数随着计算逐步迁移。每个步骤都需要把中间过程数划掉、重写所以纸张消耗极大。现代的长除法把“划掉重写”优化成了“写在下方对齐”本质上压缩了书写步骤但思想跟海盗除法是同一条脉络。有意思的是欧洲当时还存在好几种除法写法有的从高位往低位算有的反过来。最终胜出的是那个最省纸、最不容易抄错位的版本——也就是我们今天看到的模样。这其实是一个残酷的“适者生存”过程算法没有优劣只有适不适合特定工具与书写条件。3.2 竖式中每一次“试商”在做什么理解竖式的关键是搞明白那几行计算在做什么。以738÷6为例123 ______ 6 ) 738 6 -- 13 12 -- 18 18 -- 0第一步7÷6商1写在百位上7-61把十位的3落下来变成13。这一步在做的其实是“7个百除以6商1个百余1个百”。第二步13÷6商2写在十位13-121把个位的8落下来变成18。第三步18÷6商3写在个位整除。如果只把它看成一个计算过程学起来确实就只剩背步骤了。但如果看到它的本质——“把被除数拆成若干个除数乘位的和一位一位还回去”孩子就能明白为什么“商的每一位都对应被除数的一个数位”。这也是为什么竖式除法永远从最高位开始、而不是从最低位开始从高位开始余数天然能被后面的落位接着处理从低位开始余数处理反而会乱套。3.3 位值竖式里的“哪里容易眼花、哪里容易错”竖式既然被“优化”到了最省纸的形态就有它天生的脆弱点教学中最常见三类错误全部源于结构本身第一类是“落位错位”。比如738÷6如果第一步减完剩18孩子把个位8落下来时写到了十位下方后面的所有减法都会对齐错位。这类错误最隐蔽因为单看每行数字都能算就是最后商不对。第二类是“0的跳过”。被除数中间有0时比如804÷4第一步8÷42后十位上的0要落下来0÷40这一位要在商的十位写0。很多孩子以为“0除以任何数都得0”但竖式中必须把这一步走完。对0的占位没有概念竖式必乱。第三类是“余数大于除数还不觉得”。除法竖式里每一步的余数都必须小于除数一旦大于除数说明试商小了这一步乘法重来就好。这个规则很多孩子不懂——他们觉得算出来一个数就行根本没想到除法跟除法之间还有一条“余数边界”卡着。4. 为什么说除以0不是“不允许”而是“无法定义”任何一个认真教过除法的人都躲不开“为什么不能除以0”这个问题。小学阶段的常见说法是“0不能做除数”或“除以0没有意义”但这两句话孩子其实听不懂只是记住了。真要把这个问题讲透得回到除法定义本身。4.1 从“逆运算”看除以0为什么崩坏除法的定义是乘法的逆运算a÷b c意思是存在唯一的c使得 b × c a。现在把b换成0会出现两种情况。第一种a不为0比如问“5÷0等于几”。按定义需要找一个数c满足0×c5。但0乘任何数都是0不可能等于5所以这样的c不存在。竖式里表现为“试商试不出来”——不管商几乘回去都是0余数永远是5程序死循环。第二种a也为0比如问“0÷0等于几”。按定义需要找一个c满足0×c0。这回c取任何数都成立1可以2可以100也可以全都满足。所以c不唯一等于没说。这就是除以0的全貌要么找不到商要么找到无数个商。两者都违反除法定义中“存在且唯一”的要求。所以严谨的说“不能除以0”的本质是——这个式子不满足除法的定义条件因此这个运算没有被定义而不是被定义成“不允许”或者“无穷大”。很多科普说“除以0等于无穷大”那是上升到极限层面才成立的简化说法在基础算数范围内绝对不能这么教。4.2 除以0这个“坑”为什么在中世纪骑士团手里被当成信条分享一个冷知识欧洲中世纪的很多算术书和记账手册会把“任何数除以0都不可行”作为一条纪律写进去有点像今天的“安全红线”。原因很朴素——当时从事商业和税收计算的人一旦在账本里碰到除以0整套核算就崩了没有商、没有余数、连下一步都没法写。这条“纪律”不是来自理论推导纯粹是从实务中逼出来的。今天在程序开发和数据分析里除以0的崩坏依然随处可见。Excel里算比例分母为0直接显示#DIV/0!SQL里取均值遇到空集直接报错Python里整数除0直接抛ZeroDivisionError。这些都不是“系统太笨”而是程序在老老实实执行数学定义——这个操作没有定义所以必须以异常形式暴露出来。有兴趣的可以去看IEEE 754浮点标准它会给“0/0”规定一个专门的返回值NaNNot a Number中文叫“非数”含义就是我上面说的“没有可定义的结果”。连计算机都维护着这条数学底线。所以在课堂上我不太建议一上来就说“0不能做除数背下来就行”。更好的路径是让孩子先理解除法的定义然后自己推一遍让他自己发现“找不到商”和“商不唯一”这两条死路他自然就会得出“这个除法不能做”的结论。这种理解是长在脑子里的不会忘。5. 把除法的故事搬进课堂三个可复制的教学抓手讲完历史说点能直接用的。我这些年尝试把“除法的由来”做成一个融进常规教学的知识背景模块效果最好的有三类操作分别对应不同的课堂场景。5.1 物物重演用“古埃及分面包”引入除法含义适合新授“平均分”概念时用。道具是几张A4纸裁成的“面包”和一把小剪刀。给出问题9个面包分给10个人每人分到的要一样多。先让孩子用自己的方法分多数人会想到“每人先拿半个剩下的再切小块”这其实已经走在古埃及人两千多年前走过的路上——先取二分之一再处理残余。接着我把古埃及的“翻倍法”搬上黑板列出10、5、1/2这些关键分数的翻倍关系带着孩子一步步用加法凑出9。当他们发现“原来分东西还能这样算”时平均分的概念就不再是一个抽象的“除以”而是一连串真实的操作。这个环节通常要花20分钟但效果远比直接教“9÷10”要好——因为孩子是先经历了古人踩过的坑再接触到现代符号符号就不是从天而降了而是前人智慧结晶的浓缩表达。5.2 竖式对比让算筹方法和竖式方法互相对照适合在竖式除法已经练熟之后的巩固课。我会在白板上画一排算筹摆法的示意图最上面是商中间是被除数下面是除数每次去掉一位剩下部分继续处理。然后让孩子把同一个竖式写在旁边两相对照。对照点有三个算筹里“去掉被除数最左边已经处理完的那一位”对应竖式里“把这位减完后的余数盖住”算筹里“挪一根小棍换一个位值”对应竖式里“把下一位数字落下来”算筹里“每一步都要判断商几”对应竖式里“试商”。这些一一对应的关系一旦被点破孩子们会“啊”一声恍然大悟——原来竖式不是老师发明的符号游戏它就是那个几千年前就在运转的计算流程只是换了一张皮。5.3 错题溯源用“除法的历史路径”解释今天最常见的错法不带任何额外教学道具只需要一道典型错题就能完成。比如孩子把“0÷5”写成“0÷50……5”或者算“305÷5”时商里漏掉十位的0。面对这类错误与其反复强调“细心点”不如回到除法史的视角告诉孩子“你刚才的做法像极了埃及人的直觉——先把每个数位单独除一遍再拼起来”。但位值制告诉我们数位之间不是隔离的十位上的0可以被借走所以0作为被除数的数位只是暂时没有值不代表它没有参与运算。孩子一旦理解“0在数位中的占位功能”这类错误就能从根上消除不需要靠机械刷题来强记。这三条教学路径有一个共同点都把孩子从“记步骤”拉回到“想原理”。步骤会忘而原理一旦通过故事和操作被内化就变成了思维方式的一部分。6. 除法的现代身世算法里那个永恒的核心最后再往前跳一步。今天的计算工具早就把除法封装好了不管是手机计算器还是编程语言里的“/”都只是一行代码的事。但除法作为一个算法问题并没有因此消失反而在现代计算机体系里变得更加关键。硬件层面CPU里的除法器是整数运算单元里最复杂、最耗电的部件。跟加减法和乘法不同除法不能简单地用组合逻辑一条路走完它本质上是串行的——需要逐位决定商每一步都依赖上一步的余数天然有先后顺序。这跟儿童学竖式的过程惊人地一样竖式也是逐位试商的无法并行。所以很多处理器设计者会刻意用“乘以倒数”或“牛顿迭代法”把除法转换成乘法来减少延迟这恰恰重演了古巴比伦人的思路。算法层面大整数除法在密码学和区块链里是真正的重头戏。RSA加密里的模幂运算底子里全是大整数除法与取模现代密码学里用的“Barrett reduction”或者“Montgomery multiplication”本质都是在用“预计算倒数”来避开昂贵的除法。换句话说一个古代巴比伦人理解的核心策略——把除法换算成对固定除数的预先计算——至今还在支撑着现代信息安全体系。把这些连起来看会得到一个很有意思的结论除法是四种基本运算里唯一一个“从古至今都保持着高计算成本”的运算它的算法结构几千年来没有本质改变只是因为记数系统和工具的变化让同一套思想得以在更多场景里被高效施展。理解了这层背景再回头看今天小学课本里的那道竖式每一笔都变得有分量了——那是多少人、多少时代、多少工具的智慧在纸上浓缩成的几行数字。我个人的体会是教孩子除法时最有用的一个动作就是把竖式“翻译”回故事被除数是你要分的总量除数是每份要分的数量余数是分到最后兜底剩下的那一点。这个叙事古埃及人有古巴比伦人有我们的祖先也有。今天的孩子与几千年前的古人面对的是同一个问题不同的是他们手里有了一套更锋利的武器。把这套武器的来历讲清楚他们挥舞起来才真正知道劲儿往哪儿使。本文还有配套的精品资源点击获取