/* File: gcd1.c Naive program to compute the Greatest Common Divisor */ #include 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 ) ; }