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