您的位置:首页 > 编程语言 > C语言/C++

c语言用辗转相除法实现求最大公约数

2017-02-21 15:53 633 查看
方法1:递归

#include<stdio.h>
int gcd(int a,int b)
{
return a<=b?(b%a==0?a:gcd(a,b%a)):(a%b==0?b:gcd(b,a%b));
}
int main()
{
int a,b;
while(1)
{
printf("请输入ab两个数:\n");
scanf("%d%d",&a,&b);
if(a<=0 || b<=0) break;
else
{
printf("%d\n",gcd(a,b));
}
}
return 0;
}


方法2:非递归

#include<stdio.h>
int main()
{
int a,b,temp;
while(1)
{
printf("请输入ab两个数:\n");
scanf("%d%d",&a,&b);
if(a<=0 || b<=0) break;
else
{
while(b!=0)
{
temp=a%b;
a=b;
b=temp;
}
printf("最大公约数是:%d\n",a);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言