有没有办法优化这段代码?它找到形式为 1/x 且总和为 1

问题描述 投票:0回答:0
from fractions import Fraction


def f(start, end):
    fractions = []
    for i in range(start, end + 1):
        fractions.append(Fraction(1, i))
    unique_fractions = []
    for i in range(2 ** len(fractions)):
        subset = [fractions[j] for j in range(len(fractions)) if (i & (1 << j))]
        if sum(subset) == 1 and len(subset) > len(unique_fractions):
            unique_fractions = subset
    return " + ".join(str(f) for f in unique_fractions)


print(f(1, 10))

最后一行是可以使用的分母范围。

问题是它需要很长时间才能完成,甚至

print(f(1, 25))
大约需要 5 分钟,我希望能够达到数百个,但不可能像这样。

我研究了记忆化和动态规划,但两者看起来都非常困难,所以我被困住了。

python python-3.x optimization combinations fractions
© www.soinside.com 2019 - 2024. All rights reserved.