C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[3209] Re:100자리 이상의 숫자로 최대공약수를 구하려면?
안철우 [] 4225 읽음    2000-03-29 00:00
한은영 님이 쓰신 글 :
: 어떤 두 수를 입력받아 최대공약수를 구하는 프로그램에서
: 어떤 수가 100자리 이상되는 수로 하려면 어떻게 해야 하나요?
: ( 234 이나  300 등과 같은 숫자가 아니구요. 200000000000000...... 숫자가 100개인  
:    수를 말하는 겁니다.)
: long int형 으로도 안되잖아요?
: 어떤 방법이 있을까요?
: 혹시 아시면 조언 좀 부탁합니다.
: 레포트 거든요!

안녕하세요.. 에고고 벌써 레포트기간이 끝난건 아닌지?
하여간 그 문제는 간단하다고 보는데요..쩝..

배열로 100자리를 잡고요.. int no[2][100];
숫자 Input 은 스트링으로 받으시고요.. (물론 올바른 숫자인가를 체크)
루프를 돌려서 끝자리부터 앞자리까지 차례로 빼주세요...
어케 빼냐구요.. 먼저 숫자가 뒷숫자 보다 작으면 앞에서 1을 빌려오지요..
즉 통상적인 뺄셈 루틴입니다.. 빌려올땐 no[0][현재처리값-1] 의 값을 1감소,
감소하려는데 또 모자르면, 그 위에서 또 빌려 오는거지요...

최대공약수는 큰수에서 작은수를 서로 빼나가면, 같아질때 그 값이 최대공약수 이지요..
깍아먹기 공식이지요...
예를들면..

36 , 24 이라면... 큰놈을 깍아 먹지요.. 36-24 , 24
12 , 24 가 되고요... 12 , 24-12
12 , 12 앗 같아졌다.. 그럼 최대 공약수는 12군요...

48 , 18 이라면 48-18, 18
30 , 18 이고  30-18 ,18
12 , 18 이고 12 , 18-12
12 , 6 이고 12-6 , 6
6 , 6 같아졌당... 그럼 최대 공약수는 6..

이런식으로 뺄셈으로 접근하면 100 자리는 배열로 처리해서 계산하면 쉽게 해결..
배열끼리 뺄셈은 하실수 있겠지요?

그럼 도움이 되셨으면 합니다.

+ -

관련 글 리스트
3167 100자리 이상의 숫자로 최대공약수를 구하려면? 한은영 3847 2000/03/22
3209     Re:100자리 이상의 숫자로 최대공약수를 구하려면? 안철우 4225 2000/03/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.