最大最小公倍数
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 10^6。
分析
贪心
n个数的最小公倍数一定大于等于这n个数中任意一个数
因此,1~N中任选三个数的最大最小公倍数应从最大的三个数开始考虑。
可能出现以下几种情况:
-
n为奇数,显而易见最大的三个数互质,取n * (n-1)*(n-2)
-
n为偶数,由于n与n-2都为偶数不互质,所以考虑n-3。此时由于n-3与n之间差了三个,因此有可能有共同的因子:3。
当n-3是3的倍数时,取(n-1)* (n-2)*(n-3)
当n-3不是3的倍数时,取n * (n-1) * (n-3)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
long n = sc.nextLong();
long res;
if(n <= 1)
System.out.println(n);
else {
if(n % 2 != 0) {
System.out.println(n * (n-1) * (n-2));
}
else {
if((n - 3) % 3 == 0)
System.out.println((n-1) * (n-2) * (n-3));
else
System.out.println(n * (n-1) * (n-3));
}
}
}
}