且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

C语言求最大公约数(两种最简单的算法实现)

更新时间:2022-09-15 17:31:40

第一种:用较小数的最大约数于较大数作求模元算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<stdio.h>
/*
    求两个数的最大公约数
*/
 
int main(){
    int a,b,max,min,i,result;
    scanf("%d,%d",&a,&b);
 
    printf("您输入的的值分别为%d,%d\n",a,b);
     
    if(a>b){
        max=a;
        min=b;    
    }else if(a == b){
        result=a;
        goto out;
    }else{
        max=b;
        min=a;
    }
     
    for(i=min;i>0;i--){
        if((min%i) == 0){
            if((max%i) == 0){
                result = i;
                goto out;
            }
        }
    }
     
    out:
    printf("最大公约数为:%d\n",result);
    return 0;
}


第二种:古老的数学算法--辗转想除法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<stdio.h>
/*
    求两个数的最大公约数
    使用辗转相除法
*/
 
int main(){
    int a,b,max,min,i,result;
    scanf("%d,%d",&a,&b);
 
    printf("您输入的的值分别为%d,%d\n",a,b);
     
    if(a>b){
        max=a;
        min=b;    
    }else if(a == b){
        result=a;
        goto out;
    }else{
        max=b;
        min=a;
    }
     
    while(min != 0 ){
        i=max%min;
        printf("%d,%d,%d\n",max,min,i);
        max=min;
        min=i;
    }    
     
    out:
    printf("最大公约数为:%d\n",max);
    return 0;
}









本文转自 hgditren 51CTO博客,原文链接:http://blog.51cto.com/phpme/1919946,如需转载请自行联系原作者