Java函数-求两个数的最大公约数
发布时间:2023-06-29 14:25:32
在Java中,可以使用多种方法来求两个数的最大公约数。下面将介绍三种常用的方法。
1. 辗转相除法
辗转相除法(也称为欧几里德算法)是求两个数的最大公约数的一种常用方法。该方法的基本思想是:设两个数为a和b,不断用b去除a得到余数r,然后将b赋值给a,将r赋值给b,再继续进行除法运算,直到余数为0为止。此时,b的值就是a和b的最大公约数。
以下是使用辗转相除法求最大公约数的Java代码:
public static int gcd(int a, int b) {
while(b != 0) {
int r = a % b;
a = b;
b = r;
}
return a;
}
2. 最小公倍数法
另一种常用的求最大公约数的方法是最小公倍数法。该方法的基本思想是:设两个数为a和b,先求出a和b的最小公倍数LCM,然后用LCM除以a和b得到的商即为最大公约数。
以下是使用最小公倍数法求最大公约数的Java代码:
public static int gcd(int a, int b) {
int lcm = a * b / lcm(a, b);
return lcm / a;
}
public static int lcm(int a, int b) {
while(a != b) {
if(a < b) {
int temp = a;
a = b;
b = temp;
}
a = a - b;
}
return a;
}
3. 穷举法
还有一种简单粗暴的求最大公约数的方法是穷举法。穷举法的基本思想是从两个数中较小的数开始,依次递减,找到两个数都能整除的最大数。
以下是使用穷举法求最大公约数的Java代码:
public static int gcd(int a, int b) {
int min = Math.min(a, b);
int max = Math.max(a, b);
for(int i = min; i > 0; i--) {
if(max % i == 0 && min % i == 0) {
return i;
}
}
return 1;
}
以上就是求两个数的最大公约数的三种常用方法。根据实际情况选择其中一种方法进行实现即可。
