std::gcd

来自cppreference.com
< cpp‎ | numeric
在标头 <numeric> 定义
template< class M, class N>
constexpr std::common_type_t<M, N> gcd(M m, N n);
(C++17 起)

计算整数 mn 的最大公约数。

参数

m, n - 整数值

返回值

mn 均为零则返回零。否则返回 |m||n| 的最大公约数。

注意

MN 不是整数类型,或者若其中之一是(可有 cv 限定的) bool ,则程序为病式。

|m||n| 不能表示为 std::common_type_t<M, N> 类型的值,则行为未定义。

异常

不抛异常。

示例

#include <numeric>
int main() {
    constexpr int p {2 * 2 * 3};
    constexpr int q {2 * 3 * 3};
    static_assert(2 * 3 == std::gcd(p, q));
}

参阅

(C++17)
返回二个整数最小公倍数的 constexpr 函数模板
(函数模板)