SA_BLOG

윤성우의 열혈 C 프로그래밍 (도전! 프로그래밍1-3) 본문

프로그래밍/C언어

윤성우의 열혈 C 프로그래밍 (도전! 프로그래밍1-3)

wooty9 2014. 1. 14. 01:49

 

약 1시간 반 동안 머리 굴려서 작성한 코드입니다..

해결 가이드에 유클리드 호제법에 대한 내용이 나오길래 인터넷 검색해서 유클리드 호제법을 참고하여 만들었습니다.

16과 30의 최대 공약수를 테스트로 구해보는데 두 수의 최대 공약수인 2가 안나오고 14가 나오길래 고민고민 하다가

변수를 static 변수로 선언하여 해결했습니다.

(코드가 틀렸을 수도 있고.. 더 간편한 코드가 있을 수 있습니다..)

 


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
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
int GCD(int n1, int n2);
int main(void)
{
   int su1, su2;
   int num = 0;
   printf("첫번째 정수 : ");
   scanf_s("%d", &su1);
   printf("두번째 정수 : ");
   scanf_s("%d", &su2);
   printf("\n최대공약수 : %d\n", GCD(su1, su2));
   return 0;
}
int GCD(int n1, int n2)
{
   static int num1=0,num2=0;
   static int Temp = 0;
   //계산부분
   if (n1 <= n2)
   {
      num1 = n2%n1;
      num2 = n1;
   }
   else if (n1 >= n2)
   {
      num1 = n1%n2;
      num2 = n2;
   }
   //루프탈출
   if (n2%n1 == 0)
   {
      Temp = num2;
      return Temp;
   }
   else if (n1%n2 == 0)
   {
      Temp = num1;
      return Temp;
   }
   return GCD(num1, num2);
}
CodeHighlighter


Comments