欧几里德算法:求两个非负整数u和v的最大公约数.
分析:当v不为0时,辗转用操作:r=u%v,u=v,v=r消去相同的因子.直到v=0时,u的值即为所求的解.
代码1:
#include<stdio.h>
int main()
{
int u,v,r;
while(scanf("%d%d",&u,&v)!=EOF)
{
while(v!=0)
{
r=u%v;
u=v;
v=r;
}
printf("%d\n",u);
}
return 0;
}
代码2:
#include<stdio.h>
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
int a,b,c;
while(scanf("%d%d",&a,&b)!=EOF)
{
c=gcd(a,b);
printf("%d\n",c);
}
return 0;
}