输入两个正整数,求其最大公约数。
输入描述:
测试数据有多组,每组输入两个正整数。
输出描述:
对于每组输入,请输出其最大公约数。
示例1
输入
49 14
输出
7
方法一:非递归
#include<stdio.h>
int IsZero(int m,int n)
{
if(m==0)
return n;
else
return m;
}
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
int k;
int temp;
if(a==0&&b==0)
break;
else if(a==0&&b!=0||a!=0&&b==0)
k=IsZero(a,b);
else
{
while(a!=0&&b!=0)
{
temp=a;
a=b;
b=temp%b;//手动模拟
}
k=IsZero(a,b);
}
printf("%d\n",k);
}
return 0;
}
方法二:递归
#include<stdio.h>
int fun(int a,int b)//用好if/else真的好棒啊啊~
{
if(a==0||b==0)
return (a==0)?b:a;
else return fun(b,a%b);
}
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
int k;
if(a==0&&b==0)
break;
else
k=fun(a,b);
printf("%d\n",k);
}
return 0;
}