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

时间:2022-04-27 12:36:12

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

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