Java函数求取两个整数的最大公约数
最大公约数简称最大公因数,指两个或多个整数公有的约数中最大的一个。本文主要介绍Java函数如何求取两个整数的最大公约数。
1. 辗转相除法
辗转相除法也称为欧几里得算法,它是求最大公约数的常用方法。其基本原理是利用较大数除以较小数,将较小数作为除数,余数作为新的被除数,重复以上过程,直到余数为0为止。此时,较小的数即为原两数的最大公约数。
Java代码如下:
public static int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
2. 更相减损法
更相减损法也是求最大公约数的一种方法。它的基本原理是利用较大数减去较小数,不断重复此过程,直到两个数相等。此时,得到的数即为原两数的最大公约数。
Java代码如下:
public static int gcd(int a, int b) {
if (a == b)
return a;
if (a > b)
return gcd(a - b, b);
else
return gcd(a, b - a);
}
3. 质因数分解法
质因数分解法是将一个数分解成若干个质数的乘积,然后比较两个数的质因数,求出它们的公共部分,并将这些公共部分相乘即为最大公约数。
Java代码如下:
public static int gcd(int a, int b) {
int result = 1;
int i = 2;
while (i <= a && i <= b) {
if (a % i == 0 && b % i == 0) {
result *= i;
a /= i;
b /= i;
} else {
i++;
}
}
return result;
}
以上三种方法都可以用来求取两个整数的最大公约数,根据实际需要选择合适的方法即可。
