C++ algorithm to calculate least common multiple for multiple numbers

后端 未结 15 1907
太阳男子
太阳男子 2020-12-14 16:29

Is there a C++ algorithm to calculate the least common multiple for multiple numbers, like lcm(3,6,12) or lcm(5,7,9,12)?

15条回答
  •  攒了一身酷
    2020-12-14 17:15

    Using GCC with C++14 following code worked for me:

    #include 
    #include 
    
    std::vector v{4, 6, 10};    
    auto lcm = std::accumulate(v.begin(), v.end(), 1, [](auto & a, auto & b) {
        return abs(a * b) / std::__gcd(a, b);
    });
    

    In C++17 there is std::lcm function (http://en.cppreference.com/w/cpp/numeric/lcm) that could be used in accumulate directly.

提交回复
热议问题