返回给定数字的最简单分数列表

时间:2014-10-22 14:17:19

标签: math logic fractions

我正在尝试创建一个函数,该函数将生成给定数字的所有最简单分数的列表。我不会讨论给出一个例子的语言,这更像是我试图理解的逻辑。

  • 示例:4
  • 正确:1 / 4,1 / 2,3 / 4
  • 不必要:1,2 / 4

  • 示例:12

  • 正确:1 / 12,1 / 6,1 / 4,1 / 3,5 / 12,1 / 2,7 / 12,2 / 3,3 / 4,5 / 6,11 / 12
  • 不必要:1,2 / 6,4 / 6,2 / 4,6 / 12,4 / 12等

我不确定我是否正朝着正确的方向前进,通过迭代每一个可能的部分,或者是否有更好的方法,或者如何找到最简单的分数表达式。

伪代码:

denominator = 12;
for (i = 1; i <= denominator; i++) {
    for (n = 1; n <= denominator; n++) {
        // find simplest expression of fraction when n!=i
    }
}

非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

您不需要内部for循环,只需要method to find the Greatest Common Divisor以便reduce the fraction

int denominator = 12;
for (int i = 1; i < denominator; i++) {  // note change from <= to <
    int gcd = GCD(i, denominator);
    // answer will be "{i/gcd}/{denominator/gcd}"
}