怎样用C语言实现求最大公约数之辗转相除法
#include<stdio.h>
int MIN(int a,int b);
int MaxCommonFactor(int a,int b);
int main()
{
int a,b;
scanf("%d%d",&a,&b);
if (a>=0&&b>=0) //判断输入是否为正整数
printf("%d\n",MaxCommonFactor(a,b));
else printf("-1\n");
return 0;
}
int MaxCommonFactor(int a,int b) //辗转相除法
{int x=1,i,j=0;
for (i=2;i<=MIN(a,b);i++)
if ((a%i==0)&&(b%i==0))
{
x=x*i;
a=a/i;
b=b/i;
j++;
i=1;
}
return x;
}
int MIN(int a,int b)
{
if (a>b)
a=b;
return a;
}
其中,假如输入的不是正整数,返回-1;
输入的数没有最大公约数,则返回1;
正常情况返回最大公约数。
如果有不完善的地方请帮我改正或联系我改正谢谢。
9万+



被折叠的 条评论
为什么被折叠?



