C++1z 最大公約数と最小公倍数

C++1zから、2つの値の最大公約数(Greatest common divisor)を求めるgcd()関数と、最小公倍数(Least common multiple)を求めるlcm()関数が導入されます。

これらの関数は、<cmath>ではなく数値計算用のC++ヘッダ<numeric>で定義されます。bool以外の整数型ならなんでも扱えます。

#include <iostream>
#include <numeric>

int main()
{
    int x = std::gcd(12, 18);
    int y = std::lcm(3, 5);

    std::cout << x << std::endl;
    std::cout << y << std::endl;
}

出力:

6
15

宣言

// <numeric>
namespace std {
  template <class M, class N>
  constexpr common_type_t<M, N> gcd(M m, N n);

  template <class M, class N>
  constexpr common_type_t<M, N> lcm(M m, N n);
}

参照

お断り

この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。