/*--------------------------------------------------------------------*/ /* testintmath.c (Version 1) */ /* Author: Bob Dondero */ /*--------------------------------------------------------------------*/ #include #include /*--------------------------------------------------------------------*/ /* Return the greatest common divisor of positive integers iFirst and iSecond. */ static int gcd(int iFirst, int iSecond) { int iTemp; /* Use Euclid's algorithm. */ while (iSecond != 0) { iTemp = iFirst % iSecond; iFirst = iSecond; iSecond = iTemp; } return iFirst; } /*--------------------------------------------------------------------*/ /* Return the least common multiple of positive integers iFirst and iSecond. */ static int lcm(int iFirst, int iSecond) { return (iFirst / gcd(iFirst, iSecond)) * iSecond; } /*--------------------------------------------------------------------*/ /* Read two positive integers from stdin. Return EXIT_FAILURE if stdin contains bad data and an write error message to stderr. Otherwise compute the greatest common divisor and least common multiple of the two positive integers, write those two values to stdout, and return 0. */ int main(void) { int i1; int i2; int iGcd; int iLcm; int iScanfReturn; printf("Enter the first positive integer:\n"); iScanfReturn = scanf("%d", &i1); if ((iScanfReturn != 1) || (i1 <= 0)) { fprintf(stderr, "Error: Not a positive integer.\n"); exit(EXIT_FAILURE); } printf("Enter the second positive integer:\n"); iScanfReturn = scanf("%d", &i2); if ((iScanfReturn != 1) || (i2 <= 0)) { fprintf(stderr, "Error: Not a positive integer.\n"); exit(EXIT_FAILURE); } iGcd = gcd(i1, i2); iLcm = lcm(i1, i2); printf("The greatest common divisor of %d and %d is %d.\n", i1, i2, iGcd); printf("The least common multiple of %d and %d is %d.\n", i1, i2, iLcm); return 0; }