文章
19
粉丝
69
获赞
100
访问
29.7k
 
利用最小公倍数和最大公约数之间的关系。
我们可以利用如下的性质来计算 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;
    }
...
    
登录后发布评论
暂无评论,来抢沙发