求最大公约数的三种方法:C语言

发布时间 2023-10-06 12:54:43作者: 初晓臻
求最大公约数之穷举法
求最大公约数之穷举法 
    int a,b,c,gcd;
    scanf("%d%d",&a,&b);
    c = a<b?a:b;
    int i=1;
    for(i=c;i>=1;i--){
        if(a%i==0 && b%i==0){
            gcd=i;
            printf("GCD=%d\n",gcd);
            break;
        }
    }
    return 0;

 

求最大公约数之更相减损术 
求最大公约数之更相减损术 
    int a,b,c,d,gcd;
    scanf("%d%d",&a,&b);
    if(a%2==0&&b%2==0){
        c=a<b?a:b;
        gcd=c/2;
        printf("1\n%d",gcd);
    }else{
        while(a!=b){
            d = a>b?b:a;
            a = a>b?a-b:b-a;
            b=d;
        }
        gcd = a;
        printf("2\n%d",gcd);
        
    }
    return 0;

 


求最大公约数之辗转相除法
求最大公约数之辗转相除法 
    int a,b,c,d,gcd;
    scanf("%d%d",&a,&b);
    c = a<b?b%a:a%b;
    d = a<b?a:b;
    if(c==0){
        gcd=a<b?a:b;
        printf("gcd=%d\n",gcd);
    }else{
        while(c!=0){
        int i;
        i = c;
        c=d%c;
        d = i;
    } 
    printf("gcd=%d",d);
    }
    
    return 0;
}