首页 > 代码库 > 求两个整数的最大公约数

求两个整数的最大公约数

《C和指针》第7章第2道编程题:

两个整型值M和N(M、N均大于0)的最大公约数可以按照下面的方法计算:

请编写一个名叫gcd的函数,它接受两个整型参数,并返回这两个数的最大公约数。如果这两个参数中的任何一个不大于零,函数返回零。

 1 /* 2 ** 求两个整数的最大公约数 3 */ 4  5 #include <stdio.h> 6  7 int gcd( int M, int N ); 8  9 int 10 main()11 {12     int m, n;13     scanf( "%d%d", &m, &n );14     printf( "%d", gcd( m, n ) );15     return 0;16 }17 18 /*19 ** 求两个整数的最大公约数20 ** 如果两个参数中任一个数不大于0,函数返回021 */22 int 23 gcd( int M, int N )24 {25     int R, t;26     27     /*28     ** 如果M,N任一个数不大于0,函数返回029     */30     if( M <= 0 || N <= 0 )31         return 0;32     33     /*34     ** 保证M>=N35     */36     if( M < N )37     {    38         t = M;39         M = N;40         N = t;41     }42     43     /*44     ** 求最大公约数45     */46     while( ( R = M % N ) > 0 )47     {48         M = N;49         N = R;50     }51     52     return N;53 }

 

求两个整数的最大公约数