其他分享
首页 > 其他分享> > 5

5

作者:互联网

结果:

代码:

#include <stdio.h>
int Euclid(int a, int b);
int q,x,y;
void extend_Eulid(int a,int b);
int main() {
        int a, b;
        printf("输入两个整数:");
        scanf("%d%d", &a, &b);
        printf("最大公约数为:%d\n",Euclid(a, b));
        extend_Eulid(a,b);
        printf("%d=(%d)*%d+(%d)*%d\n",q,x,a,y,b);
        return 0;
}


int extended_gcd(int a,int b,int x,int y){
    if(b==0){
        x=1,y=0;
        return a;
    }
    int r=extended_gcd(b,a%b,x,y);

    int tmp=x;
    x=y;
    y=tmp-a/b*y;

    return r;
}


void extend_Eulid(int a,int b){
        if(b==0){
                x=1;
                y=0;
                q=a;
        }
        else{
                extend_Eulid(b,a%b);
                int temp=x;
                x=y;
                y=temp-a/b*y;
    }
}


int Euclid(int a, int b) {
        int r, num = 0;
        if(a>=0&b>=0){
        while(b != 0) {
                r = a % b;
                a = b;
                b = r;
                num++;
                if(b == 0){
                        num++;
                        break;
                }
        }}
        return a;
}

 

标签:,return,extend,int,Eulid,num,printf
来源: https://www.cnblogs.com/zhaojingle/p/16359466.html