试题系列三(求任意两个数的最大公约数)

1.求任意两个数的最大公约数

 1 #include<stdio.h>
 2 
 3 //最简单的方法
 4 void getMaxCom1(int a, int b);
 5 
 6 //相对getMaxCom1优化
 7 void getMaxCom2(int a, int b);
 8 
 9 //辗转相除法
10 void getMaxCom3(int a, int b);
11 
12 int main(int argc, char** argv)
13 {
14     int a = 0;
15     int b = 0;
16 
17     printf("please input 2 numbers:");
18     scanf("%d %d", &a, &b);
19 
20     getMaxCom1(a, b);
21     getMaxCom2(a, b);
22     getMaxCom3(a, b);
23 
24     return 0;
25 }
26 
27 void getMaxCom1(int a, int b)
28 {
29     int nMax = 0;
30     int i = 0;
31     int nMaxCom = 0;
32     
33     nMax = a > b?a : b;
34 
35     for (i = 1; i < nMax; i++)
36     {
37         if (0 == a%i && 0 == b%i)    
38         {
39             if (nMaxCom < i)    
40                 nMaxCom = i;
41         }
42     }
43 
44     printf("%d and %d max common number is %d
", a, b, nMaxCom);
45 }
46 
47 void getMaxCom2(int a, int b)
48 {
49     int i = 0;
50     int nMin = 0;
51 
52     nMin = a < b? a : b;
53 
54     for (i = nMin; i >= 1; i--)
55     {
56         if (0 == a%i && 0 == b%i)    
57         {
58             printf("%d and %d max common number is %d
", a, b, i);
59             break;
60         }
61     }
62 }
63 
64 void getMaxCom3(int a, int b)
65 {
66     int n = 0;
67 
68     printf("%d and %d max common number is ", a, b);
69 
70     do
71     {
72         n = a % b;
73         a = b;
74         b = n;
75     }while(n);
76 
77     printf("%d
", a);
78 
79 }
原文地址:https://www.cnblogs.com/black-mamba/p/4740777.html