辗转相除法求两个非负数的最大公约数问题

来源:互联网 发布:苏小红c语言第三版pdf 编辑:程序博客网 时间:2024/06/15 07:58

求两个非负数的最大公约数有多种方法,常见的就是辗转相除法。

①常规方法:

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;

}
测试结果如下:
这里写图片描述

原创粉丝点击