题目要求
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
需要理解的性质
- 1和任意大于1的自然数都互质
- 2和任意奇数都互质
- 相邻的两个自然数互质
- 相邻的两个奇数互质
- 不相同的两个质数互质
- 一个数是合数,另一个是质数,除合数是质数的倍数外,一般都是互质的,例:34和7
所以
-
n为奇数
ans = n * (n-1) * (n-2); -
n为偶数
1˚ n%3 != 0时 ans = n(n-1)(n-3);
2˚ n%3 == 0时 ans = (n-1)(n-2)(n-3);
#include <stdio.h>
#include <iostream>
#include <cmath>
#include <string>
#include <algorithm>
using namespace std;
typedef long long ll;
int main(){
int n;
cin>>n;
ll ans;
if(n % 2)
ans = (ll)n*(n-1)*(n-2);
else if(n % 3 == 0)
ans = (ll)(n-1)*(n-2)*(n-3);
else
ans = (ll)n*(n-1)*(n-3);
cout<<ans<<endl;
return 0;
}
(留下了数学成绩不好的眼泪……
网友评论