2 shishuoxx shishuoxx 于 2014.08.06 13:04 提问

请教JAVA如何得到两个数 之前的最小比例

比如 5:10 = 1:2 45:60 = 3:4

自己心算一下就算出来了,写函数完全没有办法,高手请帮帮忙!

3个回答

slamzwl
slamzwl   2014.08.06 14:22

数学问题,求两个数的最大公约数问题。多个数的最小比例,就求多个数的最大公约数。
然后每个数字除以最大公约数,就是他们的简化比例。最大公约数可用辗转相除法。

little623
little623   2014.08.06 14:56

public class Test {

public static void main(String[] args) {
    minScale(60, 15);
}

public static void minScale(int a, int b) {
    int tmp = a;
    if(a > b) {
        tmp = b;
    }
    for(int i = tmp; i > 0; i--) {
        if(a % i == 0 && b % i ==0) {
            System.out.println(a + ":" + b + "=" + (a / i) + ":" + (b / i));
            break;
        }
    }
}

}

zhufaming12
zhufaming12   2014.08.06 22:12

这是答案希望对你有用,测试通过,关键是求出两数的最大公约数:
package uhz8_5;

import java.io.ObjectInputStream.GetField;
import java.util.Scanner;

public class MinBi {

public static void main(String[] args) {
    // TODO Auto-generated method stub
        Scanner scn=new Scanner(System.in);
        System.out.print("请输入第一个数:");
        int a=scn.nextInt();
        System.out.print("请输入第二个数:");
        int b=scn.nextInt();
        MinBi mb=new MinBi();
        int c=mb.getMaxGY(a, b);
        System.out.println("输入两数的最简整数比如下:");
        System.out.print(a+":"+b+"="+a/c+":"+b/c);
}
public  int getMaxGY(int m,int n){
    //求最大公约数
    if(m==n){
        return n;
    }else{
        while(m%n!=0){![CSDN移动问答][1]
        int temp=m%n;
        m=n;
        n=temp;
     }
     return n;
    }
}

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!