std::lcm in C++17
Competitive programming often involves computation of Least Common Multiple (LCM) of two numbers. One way of doing that is using boost::math::lcm(), which we discussed in the post – Inbuilt function for calculating LCM in C++ .
But, recently, C++ in its latest version C++17 has also included another in-built function for computation of LCM, std::lcm(). This function is defined inside the header file .
Syntax:
std::lcm (m, n) Arguments: m, n Returns: 0, if either of m or n are 0 else, returns lcm of mod(m) and mod(n)
Remember, since this feature has been defined in latest version of C++, so using this function in compilers not supporting C++17, will throw an error.
// CPP program to illustrate // std::lcm function of C++ #include <iostream> #include <numeric> using namespace std; int main() { cout << "LCM(10, 20) = " << std::lcm(10, 20) << endl; return 0; } |
Output:
20
Important Points:
- This function works on positive numbers, and if any argument is negative, it is firstly converted to its modulus, and then calculates the LCM.
- Also, it works only on integer data type , and if any other data type like char, double, is provided in its argument, then it will throw an error.
Reference:
- C++ Weekly – Ep 67 – C++17’s std::gcd and std::lcm