이글은 예전 제 싸이월드 블로그에 작성한 글을 티스토리로 옮긴 것입니다.
원문 : 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~!! 입니다.
'삽질미학 > C,C++' 카테고리의 다른 글
유니코드(Unicode)를 UTF-8로 변환하기 (0) | 2017.03.30 |
---|---|
STL find_if() 함수에 조건변수 추가하기 (0) | 2017.01.09 |
파일값을 이용한 bisection search - class (0) | 2017.01.09 |
파일의 값을 이용한 bisection search (0) | 2017.01.09 |
printf() 에서 "%nd" 에서 n값을 변수로 대체하기. (0) | 2017.01.09 |