擅长:python、mysql、java
<p>您应该查看其他算法,以了解人们如何在合理的时间内解决这些问题。我发现rosettacode.org上的Python实现速度非常快。下面是一个基于<a href="https://rosettacode.org/wiki/Egyptian_fractions#Python" rel="nofollow noreferrer">one over there</a>的最小版本:</p>
<pre><code>from fractions import Fraction
from math import ceil
def ef(fr):
ans = []
if fr >= 1:
if fr.denominator == 1:
return [[int(fr)], Fr(0, 1)]
intfr = int(fr)
ans, fr = [[intfr]], fr - intfr
x, y = fr.numerator, fr.denominator
while x != 1:
ans.append(Fraction(1, ceil(1/fr)))
fr = Fraction(-y % x, y* ceil(1/fr))
x, y = fr.numerator, fr.denominator
ans.append(fr)
return ans
ef(Fraction(2,3))
ef(Fraction(5,8))
ef(Fraction(103,104))
</code></pre>
<p>计算时间几乎是任何分数的眨眼时间</p>