numeric_gcd

numeric_gcd (최대공약수)

std::gcd는 정수 m과 n의 최대공약수를 계산하는 함수예요. C++17부터 사용할 수 있어요.

출처: cppreference

본문

<numeric> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.

template< class M, class N >
constexpr std::common_type_t<M, N> gcd( M m, N n );

(since C++17)

정수 m과 n의 최대공약수를 계산해요.

M 또는 N이 정수 타입이 아니거나, 둘 중 하나가 (cv 한정된) bool이면 프로그램은 ill-formed예요.

|m| 또는 |n| 중 하나를 std::common_type_t<M, N> 타입의 값으로 표현할 수 없으면 동작은 정의되지 않아요.

매개변수 (Parameters)

  • m, n — 정수 값

반환값 (Return value)

m과 n이 모두 0이면 0을 반환해요. 그 외에는 |m|과 |n|의 최대공약수를 반환해요.

예외 (Exceptions)

예외를 던지지 않아요.

참고 (Notes)

피처 테스트 매크로 표준 기능
__cpp_lib_gcd_lcm 201606L (C++17) std::gcd, std::lcm

예제 (Example)

이 코드를 실행해 봐요.

#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);
}

더 알아보기 (Learn more)

cppreference