已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少?请给我Java代码实现
时间: 2023-05-29 22:02:45 浏览: 141
Java求两个正整数的最大公约数和最小公倍数
5星 · 资源好评率100%
这道题可以通过找规律得到答案。最小公倍数的性质是:两个数的积等于它们的最大公约数与最小公倍数的积。因此,我们可以通过枚举最大的三个数,求出它们的最大公约数,然后计算出这三个数的最小公倍数。具体实现代码如下:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int ans = 0;
// 枚举最大的三个数
for (int i = n; i >= Math.max(1, n - 2); i--) {
for (int j = i - 1; j >= Math.max(1, n - 2); j--) {
for (int k = j - 1; k >= Math.max(1, n - 2); k--) {
// 求最大公约数
int gcd = getGcd(i, getGcd(j, k));
// 计算最小公倍数
int lcm = i * j * k / gcd / gcd;
ans = Math.max(ans, lcm);
}
}
}
System.out.println(ans);
}
// 求最大公约数
private static int getGcd(int a, int b) {
if (b == 0) {
return a;
}
return getGcd(b, a % b);
}
}
```
时间复杂度为O(N^3),可以处理N在1000以内的数据。
阅读全文