home *** CD-ROM | disk | FTP | other *** search
- /* Finds and returns the greatest common divisor of two positive
- integers. Works by trying every integral divisor between the
- smaller of the two integers and 1, until a divisor that divides
- both integers evenly is found. All C code tested with Microsoft
- C 5.0 */
-
- unsigned int gcd(unsigned int int1, unsigned int int2) {
- unsigned int temp, trial_divisor;
-
- /* Swap if necessary to make sure that int1 >= int2 */
- if (int1 < int2) {
- temp = int1;
- int1 = int2;
- int2 = temp;
- }
-
- /* Now just try every divisor from int2 on down, until a common
- divisor is found. This can never be an infinite loop because
- 1 divides everything evenly */
- for (trial_divisor = int2; ((int1 % trial_divisor) != 0) ||
- ((int2 % trial_divisor) != 0); trial_divisor--)
- ;
- return(trial_divisor);
- }