对于此功能,我必须使用贪婪算法找到所有加起来构成分数的“埃及分数”。所有埃及分数均具有1的分子值,它们是不同的,并且sum =(分子/分母)。我知道如何使用除法和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
答案 0 :(得分:2)
math.ceil
是可以的。问题是您每次都要重新初始化周期。这是固定功能:
def egypt(numerator, denominator):
fracs = []
n = int(numerator)
d = int(denominator)
while n != 0:
c = math.ceil(d / n)
fracs.append(c)
n = (c*n) - d
d = c*d
return fracs