반응형

세 정수의 최대공약수 

 

글. 오상문 sualchi@daum.net 

 

공약수이므로 세 정수 중에서 가장 작은 수보다 클 수 없습니다. 

그러므로 세 정수 중에서 가장 작은 수를 구하고 그 수부터 1씩 줄이면서 

세 정수가 모두 약수인 경우를 찾으면 최대공약수가 됩니다. 

 

[참고' 가장 큰 최대공약수는 아무리 커봐야 가장 작은 정수값이고,

         가장 작은 최대공약수는 아무리 작아봐야 1입니다. 

 

#include <stdio.h>

 

int min(int a, int b)
{ return (a>b) ? a:b; }

 

int min3(int a, int b, int c)
{ return min(a,b) ? min(a,c) : min(b,c); }

// 세 정수 중에서 가장 큰 최대공약수를 찾는다. 
int gdc3(int a, int b, int c) {
  int i, min = min3(a, b, c);
 
  for(i=min; i>1; i--)
    if(a%i==0 && b%i==0 && c%i==0)
      return i;
   
  return 1;
}
 
int main() 

{
  int a = 200, b = 30, c = 50;
 
  printf("%d, %d, %d의 최대공약수: %d\n", a, b, c, gdc3(a, b, c));
 
  return 0;
}

 

<이상>

 

 

 

반응형

+ Recent posts