환경: macOS Sierra


C++에서 제공하는 int형 변수 혹은 unsigned long long int 등의 최대값을 넘어서는 매우 큰 숫자를 활용해야 할 경우가 개발하는 도중에 있을지도 모르겠다.


그런 경우에 활용 가능한 라이브러리가 바로 GMP 라이브러리이다. GMP는 'the GNU Multiple Precision Arithmetic Library'를 말하며 이름에서 알 수 있듯 GNU 프로젝트에서 만든 라이브러리이다.


이 라이브러리를 활용하기 위해서는 우선 현재 사용하고 있는 컴퓨터에 gmp 라이브러리가 설치되어 있는지를 확인해야 한다. 맥 환경 기준으로 gmp 라이브러리를 설치하기 위해서는 다음과 같은 명령어를 터미널에서 실행하여 설치한다.


$brew install gmp


다음은 gmp 라이브러리를 활용한 test.cpp라는 이름의 예제이다. 


#include <iostream>
#include <gmpxx.h>
using namespace std;
mpz_class getFactorial(int);
int main(int argc, char **argv) {
int num = 100;
mpz_class factorial = getFactorial(num);
cout << "Factorial of " << num << ": " << factorial << endl;
return 0;
}
mpz_class getFactorial(int num) {
int i;
mpz_class factorial = 1;
for(i=1; i<=num; i++) {
factorial *= i;
}
return factorial;
}

위의 코드를 gcc를 통해 컴파일 할 경우, 커맨드 내에 별도의 플래그가 필요하다.


$gcc test.cpp -lstdc++ -lgmpxx -lgmp -o test


성공적으로 컴파일 되었을 경우 test라는 이름의 실행 파일이 만들어진다. 이를 실행시켜 보면 그 결과를 알 수 있을 것이다.

반응형

+ Recent posts