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

Math 返回给定数字的最简单分数列表,math,logic,fractions,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等 我不确定通过遍历每一个可能的分数是否朝着正确的方向前进,或者是否有更好的方法,或者如何找到分数的最简单表达式 伪代码: denomi

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

  • 示例: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
    }
}
分母=12;

对于(i=1;i您不需要内部for循环,只需要a即可:

int分母=12;

对于(inti=1;i<分母;i++){//注意,提示的变化:如果分数的分子和分母相同,则分数的形式最简单。
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}"
}