问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
#include <stdio.h>
int main(){
long long N;
long long i,j;
long long max,max1;
scanf("%I64d",&N);
if(N%2!=0){
max=N*(N-1)*(N-2);
printf("%I64d",max);
return 0;
}
for(i = N-3;i>1;i--){
for(j=i-1;j>1;j--){
if(!(N%j||i%j))break;//有公约
if(!(N%j||(N-1)%j))break;//有公约
if(!(i%j||(N-1)%j))break;//有公约
}
if(j==1){
max1 = N*(N-1)*i;
break;
}
}
max = (N-1)*(N-2)*(N-3);
max = (max>max1)?max:max1;
printf("%I64d",max);
return 0;
}