最小公倍数是互质数的乘积。
注意:数据范围三个数的乘积是否超过long long. 需要将int型的乘积,转化成long long 类型。
或者,干脆让输入变脸和输出变量都为long long 型。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll ans;
int main(){
int n;
cin >> n;
if(n % 2 == 1){
ans = 1ll * n*(n-1)*(n-2);
}
else if(n % 3 == 0){
ans = 1ll * (n - 1) * (n - 2) * (n - 3);
}
else{
ans = 1ll * n*(n - 1)*(n - 3);
}
cout << ans << endl;
return 0;
}
扩展:最大公约数
递归法求最大公约数
int gcd(int a,int b){
return b ? gcd(b,a % b) : a;
}
int gcd(int a, int b){
return a ? b : gcd(b % a, a);
}
两个数的最小公倍数 = 两个数的乘积 / 最大公约数。