std:: lcm
|
헤더 파일에 정의됨
<numeric>
|
||
|
template
<
class
M,
class
N
>
constexpr std:: common_type_t < M, N > lcm ( M m, N n ) ; |
(C++17부터) | |
정수 m 과 n 의 최소공배수 를 계산합니다.
만약
M
또는
N
중 하나가 정수형이 아니거나, 둘 중 하나가 (가능하다면 cv 한정자 적용된)
bool
인 경우, 프로그램은 형식에 맞지 않습니다.
| m | , | n | , 또는 | m | 과 | n | 의 최소공배수가 std:: common_type_t < M, N > 타입의 값으로 표현 불가능한 경우, 이 동작은 정의되지 않습니다.
목차 |
매개변수
| m, n | - | 정수 값 |
반환값
만약 m 또는 n 중 하나가 0이면, 0을 반환합니다. 그렇지 않으면, | m | 와 | n | 의 최소공배수를 반환합니다.
예외
예외를 던지지 않습니다.
참고 사항
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_gcd_lcm
|
201606L
|
(C++17) |
std::gcd
,
std::lcm
|
예제
#include <iostream> #include <numeric> #define OUT(...) std::cout << #__VA_ARGS__ << " = " << __VA_ARGS__ << '\n' constexpr auto lcm(auto x, auto... xs) { return ((x = std::lcm(x, xs)), ...); } int main() { constexpr int p{2 * 2 * 3}; constexpr int q{2 * 3 * 3}; static_assert(2 * 2 * 3 * 3 == std::lcm(p, q)); static_assert(225 == std::lcm(45, 75)); static_assert(std::lcm( 6, 10) == 30); static_assert(std::lcm( 6, -10) == 30); static_assert(std::lcm(-6, -10) == 30); static_assert(std::lcm( 24, 0) == 0); static_assert(std::lcm(-24, 0) == 0); OUT(lcm(2 * 3, 3 * 4, 4 * 5)); OUT(lcm(2 * 3 * 4, 3 * 4 * 5, 4 * 5 * 6)); OUT(lcm(2 * 3 * 4, 3 * 4 * 5, 4 * 5 * 6, 5 * 6 * 7)); }
출력:
lcm(2 * 3, 3 * 4, 4 * 5) = 60 lcm(2 * 3 * 4, 3 * 4 * 5, 4 * 5 * 6) = 120 lcm(2 * 3 * 4, 3 * 4 * 5, 4 * 5 * 6, 5 * 6 * 7) = 840
참고 항목
|
(C++17)
|
두 정수의 최대공약수를 계산함
(함수 템플릿) |