boost の boost/integer/common_factor_rt
というライブラリで整数配列の最大公約数や最小公倍数を求める関数があるので使ってみます.
最大公約数を求めるのは gcd_range
,最小公倍数を求めるのがlcm_range
です.戻り値のpair
の1成分目に値が入っています.
以下のプログラムをatcoder の C++(GCC9.2.1) で実行します.
プログラム
#include <iostream> #include <vector> #include <boost/integer/common_factor_rt.hpp> // gcd, lcm using namespace std; int main() { vector<int> v{2,3,4}; cout << boost::integer::gcd_range(v.begin(), v.end()).first << "\n"; cout << boost::integer::lcm_range(v.begin(), v.end()).first << "\n"; return 0; }
出力
1 12