java 求最大公约数的几种方式
想了解更多算法题,可以关注微信公众号“数据结构和算法”,每天一题为你精彩解答。也可以扫描下面的二维码关注
1,欧几里得算法求最大公约数
public static int gcd1(int num1, int num2) {
int temp = num1 % num2;
while (temp != 0) {
num1 = num2;
num2 = temp;
temp = num1 % num2;
}
return num2;
}
2,还可以从num1和num2的最小值找起,一直往下减,直到找到为止
public static int gcd2(int num1, int num2) {
int temp = Math.min(num1, num2);
while (true) {
if (num1 % temp == 0 && num2 % temp == 0)
break;
else
temp--;
}
return temp;
}
public static int gcd2_1(int num1, int num2) {
int temp = Math.min(num1, num2);
while (num1 % temp != 0 || num2 % temp != 0) {
temp--;
}
return temp;
}
3,还可以辗转相减求得
public static int gcd3(int num1, int num2) {
while (true) {
if (num1 > num2)
num1 -= num2;
else if (num1 < num2)
num2 -= num1;
else
return num1;
}
}
4,还可以使用递归的方式
public static int gcd4(int a, int b) {
if (a % b == 0)
return b;
return gcd4(b, a % b);
}
关注微信公众号“数据结构和算法”,查看更多算法题