短除法求最大公約數(轉自演算法設計與分析第三版)
阿新 • • 發佈:2019-01-22
#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;
}
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;
}