最大公约数[1]
①定义
几个自然数公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。
②辗转相除法
又称“欧几里得算法”,是求最大公约数的算法
求两个数的最大公约数:如果m > n,令余数remainder = m%n,如果余数不为0,则令m = n, n = remainder,再次remainder = m%n,直到remainder = 0,此时n就是最大公约数。
求多个数的最大公约数:先求出其中两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个为止,最后所得的那个最大公约数,就是所求的几个数的最大公约数
③代码实现[2]
public static int maxCommonDivisor(int m, int n) {
if (m < n) { // 保证被除数大于除数
int temp = m;
m = n;
n = temp;
}
while (m % n != 0) { // 在余数不能为0时,进行循环
int temp = m % n;
m = n;
n = temp;
}
return n; // 返回最大公约数
}
最小公倍数
①定义
两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数[3]
②短除算法
两个数相乘等于这两个数的最大公约数和最小公倍数的积。
③代码实现
public static int minCommonMultiple(int m, int n) {
return m * n / maxCommonDivisor(m, n);
}
参考文献
[1] Java求最大公约数与最小公倍数
[2] Java求最大公约数和最小公倍数
[3] 百度百科——最小公倍数