印刷简化形式的除法

问题描述


   public static void main(String[] args) {
      
      
      int[] y = division(230,6);
      System.out.println(y[0] + " " + y[1] + "/" + y[2])
      
   }

   private static int[] division(int nominator,int denominator) {
         int k = nominator / denominator;
         int r = nominator % denominator;
         int n = denominator;
         int[] arr = { k,r,n };
         return arr;
      }

}

230/6 的除法会给我 38 + 2/6。我想得到 38 + 1/3,我想要缩小形式的分数部分。我不知道如何在 java 中做到这一点。有没有什么简单的方法可以在不使用java的内置方法之一的情况下以简化形式获取分数部分。

解决方法

您可以开发一种方法来查找 rn 的 GCD:

private static int findGCD(int num1,int num2) {
    while (num1 != num2) {
        if(num1 > num2)
            num1 = num1 - num2;
        else
            num2 = num2 - num1;
    }
    return num2;
}

在除法中,您可以添加以下代码:

int gcd = findGCD(r,n);

并替换

int[] arr = { k,r,n };

与:

int[] arr = { k,r/gcd,n/gcd };