比如 5:10 = 1:2 45:60 = 3:4
自己心算一下就算出来了,写函数完全没有办法,高手请帮帮忙!
数学问题,求两个数的最大公约数问题。多个数的最小比例,就求多个数的最大公约数。
然后每个数字除以最大公约数,就是他们的简化比例。最大公约数可用辗转相除法。
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;
}
}
}
}
这是答案希望对你有用,测试通过,关键是求出两数的最大公约数:
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;
}
}
}