古人早在3000年前就在玩算法?埃及分数的惊人发现

古人早在3000年前就在玩算法?埃及分数的惊人发现

六月 29, 2026 mathematics algorithms history computer science ancient technology

古人的代码:埃及分数里的算法智慧

你写递归函数的时候,有没有想过这套思路最早是谁想出来的?

答案是几千年前的古埃及人。

今天要聊的埃及分数,听起来可能有点冷门,但它其实是一种超级古老的算法,而且里面的思路跟你平时写代码用到的没什么两样。


古埃及人头疼的问题

咱们现在写分数太顺手了:3/7、5/12,直接怼上去就行。

但你知道吗?欧洲人要到18世纪才习惯这种写法。在那之前,数学家们表达分数的方式是把它拆成一堆"单位分数"——就是分子是1的分数,比如1/2、1/5、1/13。

那问题来了:7个面包分给8个人,怎么分才公平?

古埃及人可不写7/8,他们的答案是:

1/2 + 1/4 + 1/8

一个人拿一半,一个人拿四分之一,两个人各拿八分之一,齐活。

这个看起来简单的拆分,其实藏着很精妙的数学思想。


这不就是贪心算法吗?

重点来了。

古埃及人用来拆分任意分数的方法,跟咱们现在说的贪心算法本质上是一回事:

每一步都选最大的单位分数,然后从剩下的部分继续拆。

来,手把手演示一遍,比如要把4/23拆成埃及分数:

  1. 问自己:23除以4等于多少?答案是5.75
  2. 找个比这个数大的最小整数,就是6
  3. 所以第一个单位分数是1/6
  4. 从4/23里减去1/6,还剩1/138
  5. 搞定:4/23 = 1/6 + 1/138

这个方法永远能跑通。1880年有人严格证明了这件事,但欧洲人其实早在12世纪就从斐波那契那里学到了这招。


跟写代码的关系

你可能觉得这是历史知识,跟日常工作没半毛钱关系。

但仔细想想,刚才那个算法里面藏了什么?

  1. 递归分解 —— 把复杂问题拆成更小的子问题
  2. 贪心选择 —— 每一步都做当前最优的选择
  3. 终止证明 —— 保证每一步剩下的都更小,迟早能结束

这几个概念,恰恰是现代算法思维的核心。

你写递归函数的时候脑子里想的逻辑,跟古埃及数学家几千年前想的一模一样。只不过他们用泥板,你用键盘。


被人遗忘的贡献

有件事得说清楚。

埃及分数这套方法,比古希腊数学早了好几千年。但19世纪欧洲人重新发现莱因德纸草书的时候,很多文献把功劳算到了希腊人头上。

这种把非洲和其他非欧洲文明的贡献淡化甚至抹掉的做法,到现在学计算机历史的时候还能看到。

这事值得琢磨一下。


有意思的数学谜题

再讲个有趣的。

有些学者提到了"埃及三元组":13、17、173。

如果把它们拼成这样的算式:

3 + 1/13 + 1/17 + 1/173

算出来的结果能精确到小数点后四位——比通常说的埃及π值3.16还准。

这是古人故意算出来的,还是纯属巧合?历史学家到现在还在吵。


从泥板到代码

说回正经的。

埃及分数跟连分数有直接的数学联系,而这玩意儿在今天的计算机科学和数论里还在研究。贪心算法的思路也被用在了资源分配、任务调度、优化问题等各种地方。

所以下次你调试递归函数,或者跟同事解释为什么贪心策略能work的时候可以想想:

你参与的这个数学传统,已经有将近4000年历史了。

有时候,最古老的算法,反而最经得起时间考验。

Read in other languages:

RU BG EL CS UZ TR SV FI RO PT PL NB NL HU IT FR ES DE DA EN