C语言算法 欧几里得算法

算法背景:古希腊数学家,亚历山大港的欧几里得所著的《几何原本》,以系统系统论述几何学而著称,在其中的一卷中,他简要概述了一个求最大公约数的算法。

算法思想:欧几里得算法的思想是重复使用下列等式,知道n%m=0为止

       gcd( m , n ) = gcd( n = m % n)

直到最后gcd(m , 0)=m,m最后的取值也就是m和n的最大公约数。

用于计算欧几里得算法gcd(m,n)

第一步:如果n=0,返回值m则作为结果。通过计算过程结束,否则进入第二步。

第二步:m除以n,将余数赋值给R;

第三步:将n的值赋给m,将r的值赋值给n。返回第一步


代码

int gcd(int a,int b)
{
if(a {
int temp=b;
b=a;
a=temp;
}
while(a%b)
{
int r = a%b;
a=b;
b=r;
r=a%b;
}
return b;
}
#include
main()
{
int m,n;
scanf("%d %d",&m,&n);

printf("%d",gcd(m,n));
}

你可能感兴趣的:(C语言算法 欧几里得算法)