/* File: gcd1.c
   Naive program to compute the Greatest Common Divisor
*/

#include <stdio.h>

int gcd(long m, long n) {
   long smaller, i, max_divisor = 1 ;

   smaller = n ;
   if (m < n) smaller = m ;

   for (i = 2 ; i <= smaller ; i++) {
      if ((m % i == 0) && (n % i == 0)) {
	 max_divisor = i ;
      }
   }

   return max_divisor ;
}

main(int argc, char *argv[]) {

   long m, n, answer ;
   int r1, r2 ;

   if (argc !=3) {
      printf("Wrong number of arguments!\n") ;
      exit() ;
   }

   r1 = sscanf(argv[1],"%ld", &m) ;
   if (r1 != 1) {
      printf("%s not an integer!\n", argv[1]) ;
      exit() ;
   }

   r2 = sscanf(argv[2],"%ld", &n) ;
   if (r2 != 1) {
      printf("%s not an integer!\n", argv[2]) ;
      exit() ;
   }

   if (n <= 0 || m <= 0) {
      printf("numbers must be positive\n") ;
      exit() ;
   }

   answer = gcd(m,n) ;
   printf("The GCD of %d and %d is %d\n",
	   m, n, answer ) ;
}

