언어/c언어

greatest common divisor (최대공약수)

파아랑새 2017. 1. 14. 20:19

# include<stdio.h>
# define T 1
void findShare(int loadedNum1, int loadedNum2);

int main(void) {
 int num1, num2;
 printf("num1, num2 : ");
 scanf_s("%d %d", &num1, &num2);
 findShare(num1, num2);
 return 0;
}

void findShare(int loadedNum1, int loadedNum2) {
 int val1 = loadedNum1;
 int val2 = loadedNum2;
 int rem = 0; // 나머지
 int quo = 0; // 몫
 int temp = 0;
 
 if (val1 == val2) { // case __1
  printf("gcd(%d, %d) => %d \n", loadedNum1, loadedNum2, loadedNum2);
  return; // end
 }
 if (val1 < val2) {  // case __2
  temp = val2;
  val2 = val1;
  val1 = temp;
 }
 while (T) {
  quo = val1 / val2;
  rem = val1 % val2;
  if (rem == 0) {
   printf("gcd(%d, %d) => %d \n", loadedNum1, loadedNum2, val2);
   break;
  }
  else { // rem != 0
   val1 = val2;
   val2 = rem;
  }
 }
}