欧几里得算法描述:
欧几里得算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。gcd(a,b)=gcd(b,a%b)
其中a>b,gcd(Greatest Common Divisor).
证明:
令d为a,b的最大公约数。
则 a=K1d , b=K2d,
设a=K3b+r;
则r=a%b=a-K3b=K1d-K2K3d=(K1-K2K3)d
即r可以整除d,
即a%b可以整除a,b的最大公约数.
c语言实现:
#include<stdio.h>
int gcd(int a,int b)
{
while(b)
{
int c=a%b;
a=b;
b=c;
}
return a;
}
int main()
{
int a,b;
a=15;
b=10;
printf("gcd(%d,%d)=%d\n",a,b,gcd(a,b));
return 0;
}
int gcd(int a,int b)
{
while(b)
{
int c=a%b;
a=b;
b=c;
}
return a;
}
int main()
{
int a,b;
a=15;
b=10;
printf("gcd(%d,%d)=%d\n",a,b,gcd(a,b));
return 0;
}