Namespaces
Variants

std:: gcd

From ru.cppreference.net
Определено в заголовке <numeric>
template < class M, class N >
constexpr std:: common_type_t < M, N > gcd ( M m, N n ) ;
(начиная с C++17)

Вычисляет наибольший общий делитель целых чисел m и n .

Если либо M , либо N не является целочисленным типом, или если любой из них является (возможно, cv-квалифицированным) bool , программа является некорректной.

Если либо | m | , либо | n | не может быть представлено в виде значения типа std:: common_type_t < M, N > , поведение не определено.

Содержание

Параметры

m, n - целочисленные значения

Возвращаемое значение

Если оба m и n равны нулю, возвращает ноль. В противном случае возвращает наибольший общий делитель | m | и | n | .

Исключения

Не генерирует исключений.

Примечания

Макрос тестирования возможностей Значение Стандарт Функциональность
__cpp_lib_gcd_lcm 201606L (C++17) std::gcd , std::lcm

Пример

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

Смотрите также

(C++17)
вычисляет наименьшее общее кратное двух целых чисел
(шаблон функции)