最大公约数

 1 求两个数的最大公约数的三种算法
 2 原创 2017年03月22日 22:01:04 标签:c语言 /算法 11434
 3 从键盘输入两个整数,求着两个整数的最大公约数。
 4 解题思路:
 5 从键盘输入两个数,通过以下的三个方法实现求两个数的最大公约数:    
 6 辗转相除法:取两个数中最大的数做除数,较小的数做被除数,用最大的数除较小数,如果余数为0,则较小数为这两个数的最大公约数,如果余数不为0,用较小数除上一步计算出的余数,直到余数为0,则这两个数的最大公约数为上一步的余数。
 7 相减法:取两个数中的最大的数做减数,较小的数做被减数,用最大的数减去小数,如果结果为0,则被减数就是这两个数的最大公约数,如果结果不为0,则继续用这两个数中最大的数减较小的数,直到结果为0,则最大公约数为被减数。
 8 穷举法:将两个数作比较,取较小的数,以这个数为被除数分别和输入的两个数做除法运算,被除数每做一次除法运算,值减少1,直到两个运算的余数都为0,则该被除数为这两个数的最大公约数。
 9 /**
10  * Author:Probie
11  * Date:2017-3-21 21:38:14 
12  */ 
13 
14 #include <stdio.h>
15 int a, b, temp;
16 //辗转相除法实现 
17 int Division(){
18     printf("请输入两个数(a,b):
");
19     scanf("%d,%d",&a,&b);
20     if(a < b){
21         temp = a;
22         a = b;
23         b = temp;
24         
25     }
26     while(a%b != 0){
27             temp = a%b;
28             a = b;
29             b = temp;
30     }
31     printf("最大公约数为:%d
",b);
32     return 0;
33 } 
34 //相减法实现 
35 int Subtract(){
36     printf("请输入两个数(a,b):
");
37     scanf("%d,%d",&a,&b);
38     if(a < b){
39         temp = a;
40         a = b;
41         b = temp;
42     }
43     while(a-b != 0){
44             temp = a-b;
45             a = b;
46             b = temp;
47     }
48     printf("最大公约数为:%d
",b);
49     return 0;    
50 }
51 //穷举法实现 
52 int Exhaus() {
53     printf("请输入两个数(a,b):
");
54     scanf("%d,%d",&a,&b);
55     if(a < b) {
56         temp = a;
57         a = b;
58         b = temp;
59     }
60     for(temp = b; a%temp || b%temp; temp--);
61     printf("最大公约数为:%d
",temp);
62     return 0;
63 }
64  
65 int main(){
66     int nub;
67     printf("
求两个数的最大公约数:");
68     printf("
1、辗转相除法");
69     printf("
2、相减法");
70     printf("
3、穷举法"); 
71     printf("
请选择你要使用的方法:
");
72     scanf("%d",&nub);
73     switch(nub){
74         case 1:
75             Division();
76             break;
77         case 2:
78             Subtract();
79             break;
80         case 3:
81             Exhaus();
82             break;    
83     } 
84     return 0;
85 }
原文地址:https://www.cnblogs.com/passion-sky/p/8031602.html