分数 Fraction 分子 numerator 分母 numerator 方法一:a和b较小的数是c,循环从i到c,(从小到大,左右包含),分别去除以a和b [Java] 纯文本查看 复制代码 public String simple(int a,int b) {
int c = a >b ? b:a; // 把 a和b 较小的数赋值给c
int i = 1;
while (i < c) {
if (a%i == 0 && b%i == 0) {
a = a / i;
b = b / i;
c = a < b ? a:b;
i = 1;
}
i++;
}
String str = a + " / " + b;
return str;
}
方法二:a和b较小的数是c,循环从c到i (从大到小,左右包含),分别去除以a和b
[Java] 纯文本查看 复制代码 public String simple2(int a,int b) {
int c = a >b ? b:a; // 把 a和b 较小的数赋值给c
int i = c;
while (i > 0) {
if (a%i == 0 && b%i == 0) {
a = a / i;
b = b / i;
c = a < b ? a:b;
}
i--;
}
String str = a + " : " + b;
return str;
}
方法二比方法一好在只循环1次,但实际上运算时间方法二比方法一略长。这两种效率都比较低,不可取。建议用辗转相除法,简称辗除法。 方法三:用辗除法求最大公约数,然后再分别去除以a和b一次即可。
[Java] 纯文本查看 复制代码 public String simple3(int a,int b) {
int max;
int min;
int temp;
if (a > b){ // max是较大的数,min是较小的数
max = a;
min = b;
}else {
max = b;
min = a;
}
while (min!=0) { // 循环结果max是最大公约数
temp = max%min;
max = min;
min = temp;
}
a = a / max;
b = b / max;
String str = a + " : " + b;
return str;
}
|