반응형
※ 최대 공약수 : 공통으로 가지고 있는 약수 중 가장 큰 수
큰 수를 작은 수로 나눠 나머지가 0이 될 때까지 반복하여 최대 공약수를 구할 때
유클리드 호제법을 이용한다.
<공식>
※ 나머지 구하는 방법
▷ BIG : 큰 수 , SMALL : 작은 수
① MOK = BIG / SMALL // 먼저 몫을 구한다.
NMG = BIG - MOK * SMALL // 큰 수에서 [ 몫 * 작은 수 ]를 한 값이 나머지다.
② NMG = BIG % SMALL // MOD 연산자를 통해 나머지를 구한다.(권장)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <stdio.h> int main() { int A,B, NMG = 1, BIG , SMALL , GCM; printf("정수 2개를 입력하세요\n:"); scanf("%d %d",&A,&B); if ( A > B) { // 큰 수에서 작은 수를 나누기 위해서 BIG/SMALL을 정한다 BIG = A; SMALL = B; } else { BIG = B; SMALL = A; } while( NMG != 0 ) // 나머지(NMG)가 0이 될 때까지 반복한다 { NMG = BIG % SMALL; BIG = SMALL; SMALL = NMG; } printf("GCM : %d\n",BIG); } | cs |
< 입력 : 12 , 5 >
BIG = 12 , SMALL = 5
12 % 5 → 나머지(NMG) = 2
BIG = SMALL
SMALL = NMG
5 % 2 → 나머지(NMG) = 1
BIG = SMALL
SMALL = NMG
2 % 1 → 나머지(NMG) = 0
BIG = SMALL
SMALL = NMG
< 답 : 1 >
반응형
'프로그래밍 > 시스템' 카테고리의 다른 글
[C-알고리즘] 수열 문제 (0) | 2017.06.26 |
---|---|
[C-알고리즘] 버블정렬,선택정렬,삽입정렬 (0) | 2017.06.25 |
[java] 채팅 (0) | 2017.06.07 |
[java] 입출력스트림 - 파일쓰기 (0) | 2017.06.07 |
[C] #define for문 (0) | 2017.06.06 |