对于这个函数,我必须使用贪心算法找到所有加起来为分数的“埃及分数”。所有埃及分数的分子值为 1,它们是不同的,并且总和 =(分子/分母)。我了解如何使用除法和 math.ceil 找到一个。但是,在我尝试使用分子和分母的值后,该函数似乎永远不会解析。有没有办法不使用除法(即没有上限、除法或下限),只使用乘法和减法来重写我的代码?我可以假设分子总是 < 分母,并且都是正整数。
def egypt(numerator, denominator):
fracs = []
while numerator != 0:
n = int(numerator)
d = int(denominator)
c = math.ceil(d / n)
fracs.append(c)
n = (c*n) - d
d = c*d
return fracs