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); }
参照
- N3845 Greatest Common Divisor and Least Common Multiple
- N3913 Greatest Common Divisor and Least Common Multiple, v2
- N4061 Greatest Common Divisor and Least Common Multiple, v3
- N4529 Working Draft, C++ Extensions for Library Fundamentals, Version 2
- LWG Issue 2759
gcd
/lcm
andbool
お断り
この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。