最大公约数

1、枚举

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int a, b;
 6     int min;
 7 
 8     scanf_s("%d %d", &a, &b);
 9     if (a < b)
10     {
11         min = a;
12     }
13     else
14     {
15         min = b;
16     }
17     
18     int ret = 0;
19     for (int i = 1; i <= min; i++)
20     {
21         if (a % i == 0)
22         {
23             if (b % i == 0)
24             {
25                 ret = i;
26             }
27         }
28     }
29     
30     printf("%d和%d的最大公约数是%d.\n", a, b, ret);
31 
32     return 0;
33 }

1、辗转相除法

 1 /* 
 2     如果b等于0,计算结果,a就是最大公约数;
 3     否则,计算a除以b的余数,让a等于b,而b等于那个余数;
 4     回到第一步。
 5 
 6     a    b    temp
 7     12    18    12
 8     18    12    6
 9     12    6    0
10     6    0
11 */
12 #include <stdio.h>
13 
14 int main()
15 {
16     int a, b;
17     int temp;
18 
19     scanf_s("%d %d", &a, &b);
20     
21     while (b!=0)
22     {
23         temp = a % b;
24         a = b;
25         b = temp;
26     }
27 
28     printf("gcd = %d\n", a);
29     return 0;
30 }

 

posted @ 2019-05-30 10:55  jason2018  阅读(150)  评论(0编辑  收藏  举报