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