问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
解题思路:最开始想到找出最大的三个质数,但显然输入样例即不符合“条件”。随后想到找出最大的三个互质数即可,结果就是他们的乘积。再根据奇偶的情况分别讨论,最终有三种可能,判断即可产生答案。(注意!N在小于等于2时的情况要考虑到)
1 #include<cstdio> 2 3 int main(void) 4 { 5 long long n; 6 scanf("%lld", &n); 7 if(n <= 2){ 8 printf("%lld\n", n); 9 return 0; 10 } 11 if(n % 2 == 1){ 12 printf("%lld\n", n * (n - 1) * (n - 2)); 13 } 14 else{ 15 if(n % 3 == 0) printf("%lld\n", (n - 1) * (n - 2) * (n - 3)); 16 else printf("%lld\n", n * (n - 1) * (n - 3)); 17 } 18 19 return 0; 20 }