求两个非负数的最大公约数有多种方法,常见的就是辗转相除法。
①常规方法:
int main()
{
size_t x, y, tmp;
printf("请输入两个数:");
scanf("%d %d",&x,&y);
//实现辗转相除
while (x%y)
{
tmp = x%y;
x = y;
y = tmp;
}
printf(“最大公约数为:%d\n”,y);
system("pause");
return 0;
}
测试结果:
②递归
size_t gcd(size_t a, size_t b)
{
if (b == 0)
return a;
else
return gcd(b,a%b);
}
int main()
{
size_t x, y;
printf(“请输入两个非负整数:”);
scanf(“%d %d”, &x,&y);
printf("最大公约数为:%d\n",gcd(x,y));
system("pause");
return 0;
}
测试结果如下: