c语言2个数公约数问题帮看看哪错了

来源:百度知道 编辑:UC知道 时间:2024/06/09 09:26:04
main()
{
int z,x,y,m,n;
sancf("%d,%d"m,n);
if(m>n)
{
z=n;
whlie(n>0)
{
y=m%n;
x=z%n;
n=n-1;
if(x==0&&y==0)break)
}
}
else
{
z=m;
whlie(m>0)
{
y=n%m;
x=m%m;
m=m-1;
if(x==0&&y==0)break;
}
n=m;
}
printf("%d",n);
}

if(x==0&&y==0)break) ←这里有问题
x=m%m; ←这里....

第二个whlie有问题?应该是
y=n%m;
x=z%m;
m=m-1;
if(x==0&&y==0)break;

建议你看下C语言的书 上面有求公约数的算法?
比你这个要简单的多。

给你一个好的算法
int gcd(int v1,int v2)
{
while(v2)
{
temp=v2;
v2=v1%v2;
v1=temp;
}
return v1;
}