Java函数实现求取最大公约数和最小公倍数算法
发布时间:2023-06-23 19:05:31
Java是一种流行的编程语言,被广泛应用于软件开发、网站开发、游戏开发等领域。在Java中,实现求取最大公约数和最小公倍数算法非常简单。本文将详细介绍Java函数实现求取最大公约数和最小公倍数算法。
1. 最大公约数
最大公约数,又称最大公因数,是指两个或多个整数共有约数中最大的一个。求取最大公约数的算法有很多种,这里介绍两种最常用的算法:辗转相除法和更相减损术。
辗转相除法:对于两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。如果c=0,则b即为所求最大公约数。
Java代码实现:
public static int gcd1(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd1(b, a % b);
}
}
更相减损术:对于两个正整数a和b(a>b),它们的最大公约数等于a-b的差和b之间的最大公约数。如果a和b相等,则它们的最大公约数即为它们本身。
Java代码实现:
public static int gcd2(int a, int b) {
if (a == b) {
return a;
} else if (a < b) {
return gcd2(b - a, a);
} else {
return gcd2(a - b, b);
}
}
2. 最小公倍数
最小公倍数,是指两个或多个整数公有的倍数中,最小的一个公倍数。求取最小公倍数的算法也有很多种,这里介绍两种最常用的算法:辗转相乘法和公式法。
辗转相乘法:对于两个正整数a和b(a>b),它们的最小公倍数等于a和b的积除以它们的最大公约数。
Java代码实现:
public static int lcm1(int a, int b) {
return a * b / gcd1(a, b);
}
公式法:对于两个正整数a和b(a>b),它们的最小公倍数等于a和b的积除以它们的最大公约数。
Java代码实现:
public static int lcm2(int a, int b) {
return a * b / gcd2(a, b);
}
以上四个函数可以放在一个类里面,实现求取最大公约数和最小公倍数的功能。
完整代码如下:
public class GcdAndLcm {
public static void main(String[] args) {
int a = 60, b = 24;
System.out.println("gcd1(" + a + ", " + b + ") = " + gcd1(a, b));
System.out.println("gcd2(" + a + ", " + b + ") = " + gcd2(a, b));
System.out.println("lcm1(" + a + ", " + b + ") = " + lcm1(a, b));
System.out.println("lcm2(" + a + ", " + b + ") = " + lcm2(a, b));
}
public static int gcd1(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd1(b, a % b);
}
}
public static int gcd2(int a, int b) {
if (a == b) {
return a;
} else if (a < b) {
return gcd2(b - a, a);
} else {
return gcd2(a - b, b);
}
}
public static int lcm1(int a, int b) {
return a * b / gcd1(a, b);
}
public static int lcm2(int a, int b) {
return a * b / gcd2(a, b);
}
}
运行结果:
gcd1(60, 24) = 12 gcd2(60, 24) = 12 lcm1(60, 24) = 120 lcm2(60, 24) = 120
以上就是Java函数实现求取最大公约数和最小公倍数算法的详细介绍。通过本文的学习,相信读者已经掌握了如何在Java中实现求取最大公约数和最小公倍数的算法。
