【问题标题】:Return list of simplest fractions for a given number返回给定数字的最简单分数列表
【发布时间】:2014-10-22 14:17:18
【问题描述】:

我正在尝试创建一个函数,该函数将为给定数字生成所有最简单分数的列表。我并不在意示例是用什么语言给出的,更多的是我试图理解的逻辑。

  • 示例: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
    }
}

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 提示:如果分子和分母是coprime,则分数是最简单的形式。

标签: math logic fractions


【解决方案1】:

您不需要内部 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}"
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 2016-03-07
    • 2011-04-12
    • 2023-03-03
    相关资源
    最近更新 更多