ALGO-2 最大最小公倍数(数学分析)

问题描述

已知一个正整数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 }

 

posted @ 2018-02-26 21:53  想变肥的猫  阅读(173)  评论(0)    收藏  举报