求两个整数的最大公约数

《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,函数返回0

21 */

22 int 

23 gcd( int M, int N )

24 {

25     int R, t;

26     

27     /*

28     ** 如果M,N任一个数不大于0,函数返回0

29     */

30     if( M <= 0 || N <= 0 )

31         return 0;

32     

33     /*

34     ** 保证M>=N

35     ** 这部分多余了感谢@garbageMan的指正

36     if( M < N )

37     {    

38         t = M;

39         M = N;

40         N = t;

41     }

42     */

43     

44     /*

45     ** 求最大公约数

46     */

47     while( ( R = M % N ) > 0 )

48     {

49         M = N;

50         N = R;

51     }

52     

53     return N;

54 }

 

你可能感兴趣的:(求两个整数的最大公约数)