三浦ノート

自分の経験したことを検索可能にしていくブログ.誰かの役に立ってくれれば嬉しいです.

整数配列の最大公約数を求めるC++/boostライブラリ

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

参考

Greatest Common Divisor and Least Common Multiple - 1.71.0