文章
19
粉丝
69
获赞
30
访问
18.1k
利用最小公倍数和最大公约数之间的关系。
我们可以利用如下的性质来计算 n 个数的最小公倍数:
LCM(a, b, c) = LCM(LCM(a, b), c)
也就是说,n 个数的最小公倍数等于先计算前两个数的最小公倍数,然后再将得到的最小公倍数与下一个数计算最小公倍数,依次类推,直到计算完所有的数。
同时,利用最大公约数的性质来简化计算过程:
LCM(a, b) = a * b / GCD(a, b)
因此,只需要求出 n 个数两两之间的最小公倍数,然后再继续求最小公倍数,直到得到最终结果。
#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b)
{
if (b == 0)
{
return a;
}
else
{
return gcd(b, a % b);
}
}
int lcm(int a, int b)
{
return a * b / gcd(a, b);
}
int lcmofN(vector<int> vec, int n)
{
int result = vec[0];
for (int i = 1; i < n; i++)
{
result = lcm(result, vec[i]);
}
return result;
}
int main()
{
int n;
while (cin >> n)
{
vector<int> vec(n);
for (int i = 0; i < n; i++)
{
cin >> vec[i];
}
int result = lcmofN(vec, n);
cout << result << endl;
}
...
登录后发布评论
暂无评论,来抢沙发