Problem:
Greatest Common Divisor

Write a program which finds the greatest common divisor of two natural numbers a and b

Input

a and b are given in a line sparated by a single space.

Output

Output the greatest common divisor of a and b.

Constrants

1 ≤ a, b ≤ 109

Hint

You can use the following observation:

For integers x and y, if x ≥ y, then gcd(x, y) = gcd(y, x%y)

Sample Input 1

54 20

Sample Output 1

2

Sample Input 2

147 105

Sample Output 2

21

Solution in C (judge verdict: Accepted)

#include <stdio.h>

int main(){

  int x,y,i,d;

  /* Using loop to check input numbers are in constrants or not */
  while(1){
    scanf("%d %d", &x,&y);
    if(x>=1 && y<=1000000000)break;
    else printf("error!\n");
  }

  /* make three situations x>y, x<y and x=y */
  if(x>y){
    d=x%y;
    for(i=d ; i>0 ; i--){
      if(y%i==0 && d%i==0)break;
    }
  }
  else if(x<y){
    d=y%x;
    for(i=d ; i>0 ; i--){
      if(x%i==0 && d%i==0) break;
    }
  }
  else i=x;

  /* output the greatest common divisor */
  printf("%d\n", i);

  return 0;
}