我遇到了这个问题,我们试图使用Fibonacci算法找到埃及分数。对于分子,它总是必须等于1。然后,我们必须确定底部是否是实际数字。
我们有两个来自用户的输入,他们在这些输入中给我们一个数字(必须是正数)
我已经找到了一种方法来确定有理数的底部数是否是一个实际数字..(一个非常类似的例子:Practical Number)但我迷失了如何将其转换为埃及分数。
在说明中,它指出我们应该根据我们的分形列表找到最大的分数。例如:如果有理数是5/8,则因子8是[1,2,4]。可以从中减去的最大部分是1/2。
我甚至不知道从哪里开始转换。我只知道如果用户输入的第二个数字是实际数字,我必须计算相当的埃及分数..
输出应该与此类似地运行:
Num1 : 7
Num 2: 8
Denomiator factors: [1,2,4,8]
Num 2 is a practical number.
Fraction can be represented by:
1/2 + 1/4 + 1/8
任何开始的帮助将不胜感激。我真正理解这个概念以及它所要求的内容 - 我只是坚持从哪里开始。示例代码将是一个很大的帮助。
答案 0 :(得分:0)
好的......我将使用示例7/8来回应你刚刚告诉我们的内容。
伪码:
for factor in factor_list:
weight = denom/factor
while weight < numer:
# Add the fraction 1/factor to the solution;
# reduce numer by weight (subtracting that fraction)
# When you exit these loops,
# numer should be 0, and
# you should have accumulated all of
# the "1/factor" fractions in your solution.