이글은 예전 제 싸이월드 블로그에 작성한 글을 티스토리로 옮긴 것입니다.
원문 : http://cy.cyworld.com/home/21147242/post/5440C0C849D5739A07C68401
원문 작성일 : 2014.10.17

============================================================

 

github : https://github.com/hahaite/Big_Integer

 

File : bigInt_170713.zip

 

오일러 프로젝트 (http://euler.synap.co.kr/) 를 풀다가
엄청나게 큰 수를 계산해야 하는 상황이 발생했다.
이에 제목과 같은 걸 함 짜보자싶어 구현하게 되었다. (첨부파일 참조)
덕분에 자릿수 제약이 없는 정수 계산이 가능하였다. ex) 1000!
큰 수의 계산에 촛점을 두었기에 많은 횟수의 연산은 속도가 느릴 수 있다.

간단한 사용법은 아래와 같다.

CBigInt A, B, C ;
A = 12345 ; // int 형 입력 가능.
B = "111234574734892783" // 매우 큰 수는 string 형으로 입력함.
C = A + B ;
printf("sum : %s\n", C.c_str()) ;

 

기타 사칙연산 증가,감소연산, 크기 비교 등이 가능하다.

 

추가로 Euler Project를 풀면서 몇몇 필요한 아래 기능이 추가되었다.
 - n! (Factorial) 계산.
 - string 뒤집기
 - palindrome 인지 체크
 - string 정렬
 - 조합(combinations) 계산.
 - 분수 계산.
 - 제곱 (pow) 계산.

 

====================================================
기타 예제는 첨부파일의 main.cpp 에 있다.
테스트하고 싶은 부분을 #if 0 ->#if 1 로 바꾸고 컴파일 한 후 결과를 확인할 수 있다.
표준 함수를 사용하였으므로 개발환경의 영향을 받지 않으리라 본다.
테스트는 Fedora13, GCC 4.4.5 기반에서 테스트를 진행하였다.
================================

뭐 누가 사용할까 싶긴 한데요.
혹시나 사용하다 버그 발견이나 수정사항 있으면 댓글로 알려주세요.
참, 이 코드는 FREE~!! 입니다.

+ Recent posts