最大最小公倍数
转载请注明出处: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 }