问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
long n = sc.nextLong();
long m;
if(n%2!=0){
m = n*(n-1)*(n-2);
}else{
m = getMax(n);
}
System.out.println(m);
sc.close();
}
static long getCommon(long a,long b){
long n = a*b;
long c = a%b;
while(c>0){
a=b;
b=c;
c=a%b;
}
n/=b;
return n;
}
static long getMax(long n){
long max=(n-1)*(n-2)*(n-3);
int i =1;
while(n*(n-i)*(n-i-1)>max){
int j=i+1;
while(n*(n-i)*(n-j)>max){
long res = getCommon(getCommon(n,n-i),n-j);
if(res>max){
max=res;
}
j++;
}
i++;
}
return max;
}
}