《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 }