Java 求最大公约数和最小公倍数
Java 求最大公约数和最小公倍数
The greatest common divisor
如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数,几个整数中公有的约数,叫做这几个数的公约数,其中最大的一个,叫做这几个数的最大公约数
以下代码使用欧几里得算法
两个数的乘积等于这两个数的最大公约数与最小公倍数的积
使用循环
public static int getGCD(int a, int b) {
if (a < 0 || b < 0) {
return -1; //不考虑负数的约数
}
if (b == 0) {
return a;
}
while (a % b != 0) {
int temp = a % b;
a = b;
b = temp;
}
return b;
}
使用递归
public static int getGCD(int a, int b) {
if (a < 0 || b < 0) {
return -1; //不考虑负数的约数
}
if (b == 0) {
return a;
}
return a % b == 0 ? b : getGCD(b, a % b);
}
The lowest common multiple
两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数
public static int getLCM(int a, int b) {
for (int i = a;; i = i + a) {
if (i % b == 0) {
return i;
}
}
}