使用Fibonacci算法的埃及分数

时间:2016-11-30 01:40:48

标签: python algorithm fibonacci fractions

我遇到了这个问题,我们试图使用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

任何开始的帮助将不胜感激。我真正理解这个概念以及它所要求的内容 - 我只是坚持从哪里开始。示例代码将是一个很大的帮助。

1 个答案:

答案 0 :(得分:0)

好的......我将使用示例7/8来回应你刚刚告诉我们的内容。

  1. 从分数的两个部分开始:numer = 7,denom = 8
  2. 确定 denom 是一个实用的数字;这包括返回其因子,[1,2,4,8]。
  3. 按顺序排列因子;如果您确保分数始终小于1,则可以丢弃 1 因子。
  4. 遍历列表,一次一个因素,构建埃及分数的条款。
  5. 伪码:

    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.
    
相关问题