问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
代码:
#include
using namespace std;
int gcd(int a, int b)
{
return b ? gcd(b, a % b) : a;
}
int lcm(int a, int b)
{
return a / gcd(a, b) * b;
}
bool is_prime(int n)
{
for(int i = 2; i * i <= n; i++)
if(n % i == 0)
return false;
return true;
}
int main()
{
long long ans, n;
while(cin >> n)
{
if(n <= 2) ans = n;
else if(n % 2 == 1) ans = n * (n - 1) * (n - 2);//奇-偶-奇,三个数中必定不存在公因数2,也必定不存在公因数3.
else//偶-奇-偶,必定存在公因数2,可能存在公因数3,
{
if(n % 3 == 0) ans = (n - 1) * (n - 2) * (n - 3);//存在公因数3,把这三个数依次减1.
else ans = n * (n - 1) * (n - 3);
}
cout << ans << endl;
}
return 0;
}
标签:gcd,公倍数,样例,long,蓝桥,int,算法,ans
来源: https://blog.csdn.net/qq_44826711/article/details/113789661