短除法求最大公约数(转自算法设计与分析第三版)

#include
int main()
{
    /*短除法求最大公约数*/
    int i;
    int j;
    int a;
    int b;
    int t;
    int c=1;
    scanf("%d%d",&a,&b);
        int x=a;//把a,b的值存到x,y变量中,用x,y进行数值运算,以保证输出所求最大公约数是输入的值
        int y=b;
    for(i=2;i     {//从2开始遍历,查找符合条件的i
        if(x     {//如果X         t=y;
        y=x;
        x=t;
    }
        while(x%i==0&&y%i==0)
        {//若X,Y能同时余i结果为0,则说明i为X,Y的公约数
            c=c*i;//符合条件的公约数累乘
            x=x/i;
            y=y/i;
        }


    }
    printf("%d %d maximal common divisor is %d\n",a,b,c);//c最大为公约数
    return 0;
}

你可能感兴趣的:(短除法求最大公约数(转自算法设计与分析第三版))