最大最小公倍数

转载请注明出处:http://www.cnblogs.com/zhishoumuguinian/p/8427880.html

思路:首先看两个定理(1)两个互质数的最小公倍数是他们的乘积;(2)相邻的两个数互质。

那么如果想让这两个数的最小公倍数尽可能大,就找互质的就可以了,三个数也是同样。互质数越大,最小公倍数也就越大,于是我们从大的数开始找互质的三个数。

1.如果n 是奇数,那么n, n-1, n-2 就互质。

2.如果n是偶数,需要考虑两种情况,n是否是三的倍数。不是三的倍数:n是偶数,那么n-2也是偶数,n和(n-2)不能同时出现,所以剩下数的里边最大的就是n*(n-1)*(n-3)。是三的倍数:n是三的倍数,n和(n-3)不能同时出现,但同时n也是偶数,在n,(n-1),(n-2),(n-3)里符合条件的就只能是(n-1)*(n-2)*(n-3)。

粘上代码

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     long long n;
 7     cin>>n;
 8     if(n<3) cout<<n;
 9     else if(n&1) cout<<n*(n-1)*(n-2);//n是奇数
10     else
11     {
12         if(!(n%3))//n是三的倍数
13         {
14             cout<<(n-1)*(n-2)*(n-3);
15         }
16         else
17         {
18             cout<<n*(n-1)*(n-3);
19         }
20     }
21 }
原文地址:https://www.cnblogs.com/zhishoumuguinian/p/8427880.html