/* * gcd.c -- greatest common divisor program * * to build: gcc -o gcd gcd.c * */ #include /* Computing the gcd is done using the following formula: gcd(n, m) = n if n == m = gcd(n-m, m) if n > m = gcd(n, m-n) if n < m */ int main(int argc, const char *argv[]) { int x, y; if ( argc < 3 ) { printf("Usage: %s num1 num2\n", argv[0]); return 1; } x = atoi(argv[1]); y = atoi(argv[2]); if ( x <= 0 || y <= 0 ) { printf("Input error: numbers must be greater than 0.\n"); return 1; } printf("The gcd of %d and %d", x, y); while ( x != y ) { if ( x > y ) x = x - y; else y = y - x; } printf( " is %d.\n", x ); return 0; }