1. 程式人生 > >短除法求最大公約數(轉自演算法設計與分析第三版)

短除法求最大公約數(轉自演算法設計與分析第三版)

#include<stdio.h>
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<y;i++)
    {//從2開始遍歷,查詢符合條件的i
        if(x<y)
    {//如果X<Y則進行交換,保證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;
}