欧几里得算法的核心是:
被除数和除数的公因数,与除数和其与被除数的模的公因数是相同的
设a/b=q……..r;
假设a=kc,b=tc;其中a=bq+r; kc=tc+r; (k-t)c=r; 所以c也是r的公因数。所以a与b和b与r的公因数相同,所以最大公因数也相同。所以通过辗转相除得到的也就是最大的公因数了。
#include <stdlib.h>
#include<stdio.h>
int gcd (int x,int y)
{
if(x<y)
{
int m;
m=x;
x=y;
y=m;
}
int t;
t=x%y;
if(t>0)
return gcd(y,t);
else
return y;
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
int k;
k=gcd(a,b);
printf("%d",k);
return 0;
}