Lv 0. 피자 나눠 먹기(2) - gcd(), lcm()은 <numeric> 헤더에 있다.

https://school.programmers.co.kr/learn/courses/30/lessons/120815

 

#include <string>
#include <vector>
#include <numeric>

using namespace std;

int solution(int n) {
    return lcm(n,6)/6;
}

처음에 lcm을 쓰는데 이게 math헤더인가 하고 첨부해보니 없어서 어디에 있는지 모르겠어서 #include <bits/stdc++.h> 로 제출하여서 해결하였다. 

그 후에 어디에 있는지 검색할때 gpt를 사용해보았는데 gpt는 잘못된 답을 제시해주었다. 

C++ 표준 라이브러리에는 `lcm` 함수가 포함되어 있지 않습니다. `lcm` 함수를 사용하려면 다른 방법을 찾거나 직접 구현해야 합니다.

`lcm` (최소 공배수)를 계산하려면 다음과 같이 구현할 수 있습니다.

```cpp
#include <iostream>
#include <algorithm>

int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

int lcm(int a, int b) {
    return (a * b) / gcd(a, b);
}

int main() {
    int a = 12;
    int b = 18;
    int result = lcm(a, b);
    std::cout << "LCM of " << a << " and " << b << " is " << result << std::endl;
    return 0;
}
```

위 코드에서 `gcd` 함수는 최대 공약수(GCD)를 계산하고, `lcm` 함수는 최소 공배수(LCM)를 계산합니다. 
이 두 함수를 사용하여 LCM을 계산할 수 있습니다.

 

그 후에 추가질문으로 아래와 같은 답변을 얻을 수 있었다. 

제가 제공하는 정보가 2021년 9월 기준이라서, 그 이후에 C++ 표준 라이브러리에 변경이 있을 수 있습니다.
2021년 9월까지의 정보로는 C++ 표준 라이브러리에 `gcd()`와 `lcm()` 함수가 직접 포함되어 있지 않았습니다.

C++11부터 C++ 표준 라이브러리에 `<numeric>` 헤더에 `std::gcd()`와 `std::lcm()` 함수가 
포함되었습니다. 이 헤더를 포함하고 해당 함수를 사용할 수 있습니다. 아래는 간단한 예제 코드입니다.

```cpp
#include <iostream>
#include <numeric>

int main() {
    int a = 12;
    int b = 18;

    int gcd_result = std::gcd(a, b);
    int lcm_result = std::lcm(a, b);

    std::cout << "GCD of " << a << " and " << b << " is " << gcd_result << std::endl;
    std::cout << "LCM of " << a << " and " << b << " is " << lcm_result << std::endl;

    return 0;
}
```

따라서 C++11 이상의 버전을 사용하고 있다면, `<numeric>` 헤더를 포함하고 `std::gcd()`와 
`std::lcm()` 함수를 사용할 수 있습니다.

 

항상 gpt에서 제공해주는 정보를 믿어서는 안될것 같다. 

 

그래서 구글검색을 통해서 블로그를 찾아 들어갔고 해당 블로그에서 아래와 같은 정보를 얻을 수 있었다. 

 

참조 https://torbjorn.tistory.com/244

 

위와 같은 정보를 기반으로 찾아보니, 

https://en.cppreference.com/w/cpp/numeric/gcd

https://en.cppreference.com/w/cpp/numeric/lcm

gcd와 lcm이 c++17부터 numeric 헤더를 이용해서 사용할 수 있다는걸 알 수 있었고, gpt는 자기가 21년 9월까지의 정보를 기반으로 한다고 해서 모른다고 하지만, c++17의 출시일을 검색해보니, 

최종 표준이 2017년 12월에 출시되었다는걸 알 수 있었다. 

gpt의 정보를 너무 맹신하진 말자. 

 

 

참조

https://ko.wikipedia.org/wiki/C%2B%2B17

  Comments,     Trackbacks