首页 > 代码库 > C语言求最大公约数(两种最简单的算法实现)

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

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

#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;
}


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

#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;
}


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