package com.example.demo;
public class demo1 {
public static void main(String[] args) {
String[] strArr = new String[]{"1/2","1/3","3/4","1/5","1/6"};
String result = strArr[0];
for (int i = 1; i < strArr.length; i++) {
String proportion = strArr[i];
result = compareFraction(result, proportion);
}
System.out.printf(result);
}
private static String compareFraction(String a, String b) {
String[] aArr = a.split("/");
String[] bArr = b.split("/");
Integer aArr0 = Integer.parseInt(aArr[0]);
Integer aArr1 = Integer.parseInt(aArr[1]);
Integer bArr0 = Integer.parseInt(bArr[0]);
Integer bArr1 = Integer.parseInt(bArr[1]);
/*两个分数进行通分*/
Integer lcm = LCM(aArr1, bArr1); //计算两个分母的最小公倍数
Integer t1 = lcm / aArr1; //把两个数的分子乘上通分倍数
Integer a1 = aArr0 * t1;
Integer t2 = lcm / bArr1;
Integer b1 = bArr0 * t2;
/*比较分子的大小*/
if (a1 < b1) {
return b;
} else if (a1 == b1) {
return b;
} else {
return a;
}
}
private static int LCM(int a, int b) {
/*排序保证a始终小于b*/
if (a > b) {
int t = a;
a = b;
b = t;
}
/*先求出最大公约数*/
int c = a;
int d = b;
int gcd = 0;
while (c % d != 0) {
//k保存余数
int k = c % d;
//除数变为c
c = d;
//被除数变为余数
d = k;
}
/*辗转相除结束后的c即为所求的最大公约数*/
gcd = d;
/*使用公式算出最小公倍数*/
int lcm = a * b / gcd;
return lcm;
}
}