본문 바로가기

프로그래밍/시스템

[C-알고리즘] 유클리드 호제법

반응형

※ 최대 공약수 : 공통으로 가지고 있는 약수 중 가장 큰 수

큰 수를 작은 수로 나눠 나머지가 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 != )  // 나머지(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