什么是埃及分数?
埃及分数是指把一个正有理数表示为若干个互不相同的单位分数之和,所谓单位分数就是分子为 1 的分数,例如 \(\frac{1}{2}\)、\(\frac{1}{3}\) 或 \(\frac{1}{7}\)。古埃及人书写所有分数时都采用这种形式(仅 \(\frac{2}{3}\) 有一个专门的符号例外)。本计算器会自动把你输入的任意真分数转换成这样的求和形式。
如何使用本计算器
输入一个真分数的分子和分母(分子要小于分母)。计算器会先把分数约分为最简形式,再运用贪心算法,最后展示完整的分解结果,并告诉你其中包含多少个单位分数。
算法原理详解
这种贪心算法通常归功于斐波那契和西尔维斯特,其核心思路是不断减去尽可能大的单位分数。对于余下的分数 \(a/b\),下一个分母为 \(d = \lceil b/a \rceil\)。减去 \(\frac{1}{d}\) 后得到新分数 \(\frac{a\cdot d - b}{b\cdot d}\),约分后继续按相同方法处理。完整的分解形式为:
$$\begin{gathered} \frac{\text{Numerator } a}{\text{Denominator } b} = \frac{1}{d_1} + \frac{1}{d_2} + \cdots + \frac{1}{d_k} \\[1.5em] \text{where}\quad \left\{ \begin{aligned} d_i &= \left\lceil \frac{b}{a} \right\rceil \\ \frac{a}{b} &\to \frac{a\,d_i - b}{b\,d_i} \quad (\text{reduced, then repeat}) \end{aligned} \right. \end{gathered}$$由于每一步分子都严格减小,因此该过程一定会在有限步内结束。
实例演示
以 \(\frac{5}{6}\) 为例。此时 \(d = \lceil 6/5 \rceil = 2\),所以先取出 \(\frac{1}{2}\)。余数为 $$\frac{5}{6} - \frac{1}{2} = \frac{2}{6} = \frac{1}{3}.$$ 这已经是一个单位分数,因此分解结果为 \(\frac{1}{2} + \frac{1}{3}\),共使用 2 个单位分数。可以验证:$$\frac{1}{2} + \frac{1}{3} = \frac{3}{6} + \frac{2}{6} = \frac{5}{6}. \checkmark$$
常见问题
埃及分数的分解结果是唯一的吗?不是。同一个分数可以有多种不同的单位分数表示方式;贪心算法只给出其中一种有效的分解。
为什么这些分数必须互不相同?按照定义,埃及分数要求各个分母都不相同,正是这一点让贪心算法变得有趣,而不是简单地把 \(\frac{1}{b}\) 重复相加。
分母会不会变得非常大?会的。即便是看起来很简单的分数,贪心算法也可能产生出奇大的分母,这正是它众所周知的一个缺点。