|
박희중 님이 쓰신 글 :
: 다름이 아니라...밑에 나온 문제가 정확히 무슨말을 하는지 잘 몰라서 그럽니다.
: 어떻게 하라는건지 문제 해석이나 실행을 시킬때 어떻게 하는지만 좀 가르쳐 주세요.
: 솔직히 숙제 입니다만..숙제를 대신 해 달라고 하는게 아니라..
: 어떻게 하는지만 읽어 보시고 힌트나 아님 문제의 정확한 해석만이라도
: 해 주셨으면 합니다.
:
: 2002. 05. 12.
:
: * 개요
: 1. 큰 정수를 처리하기 위한 클래스를 정의한다.
: 2. 이 클래스는 다양한 연산과 멤버 함수들을 제공한다.
: 3. 큰 소수를 얻을 수 있는 함수를 구현한다.
:
: * 처리 방식
: 1. main() 함수는 기본적으로 함수 f()를 호출한다. 이 함수는 별도로 제공되는 파일에 포함되어 있으며 제출된 프로그램과 분리컴파일/링크/실행된다.
: 2. 클래스의 이름은 Number로 한다.
:
: * 클래스의 골격
: 1. 클래스 멤버 변수의 구성은 프로그래머에게 맡긴다.
: 2. 생성자와 소멸자를 제공한다.
: 가. Number n(30); /* 정수 30을 의미 */
: 나. unsigned a[10]={1,2,3,4,5,6}; Number m(5,a);
: /* 1*2^4L + 2*2^3L + 3*2^2L + 4*2^L + 5 */
: /* L 은 프로그래머가 직접 정의할 필요가 없음 */
: 다. Number k(n); Number k=n /* 복사 생성자 */
: 3. 기본적으로 제공되어야 할 연산자
: 가. 사칙연산 및 나머지 연산
: 나. 증감연산
: 다. 대소비교
: 라. 표준출력
: 4. 기본적으로 제공되어야 할 멤버함수
: 가. int isprime() : 객체가 소수이면 1, 아니면 0
: 나. Number prime(int k); k 번째 소수를 반환
: 다. Number primes(Number n); n 이하의 소수의 개수
:
:
: 한달 전에 나온건데..1번은 나름대로 풀었는데..
:
: 2번째 문제는 문제 해석이 제대로 되지 않아 아직 손을 못대고 있습니다..
:
: 어떻게 해석을 해야 하는지 좀 가르쳐 주세요..
:
: 나름대로는 숫자를 넣으면 그게 소수인지 판단 하라는 프로그램이라 생각하는데....
:
: 도저히 그게 아닌거 같아 이렇게 질문 합니다..
:
: 소수 판별인데..그 숫자가 큰 숫자를 다루라는 말인가요??
:
: 아..그리고 하나만 더...
:
: 256진법으로 숫자를 다룰때..어떻게 해야 합니까..
:
: 조금의 힌트만이라도 좀 가르쳐 주세요..
:
: 그럼 좋은 하루 되세요..
:
:
흐흐흐...
이것은 말이죠..
교수님께서 무한정수자리수를 가지는 연산을 처리하라는 문제입니다.
mathmetica 등의 수학전용패키지는 이런 처리를 지원하게 되어있는데..
그것을 지원하는 라이브러리를 어떻게 만들것인가 고민하라고 낸 문제이군요..
참고로 Bignumber 라는 라이브러리가 있습니다.
openssl (www.openssl.org) 패키지안에 그라이브러리가 있습니다.
소스보기 쉽지않지만, 이것을 고려해보시죠.
또한, 256진법이라는것은 2진수로 보았을때, 0xff 가 최대값이 되겠지요.
기존의 숫자를 8bit 단위 (1char) 로 묶어서 고려하시면 될것 같네요.
이만.
|