c语言最大公约数出错了

来源:百度知道 编辑:UC知道 时间:2024/09/18 06:22:16
int yueshu(int x,int y)
{
int max,min,i,a;
if(x>y)
{
max=x;
min=y;
}
if(x<y)
{
max=y;
min=x;
}
for(i=min;;min--)
{
if(min%i==0&&max%i==0)
{
a=i;break;
}
}
return a;
}
#include<stdio.h>
void main()
{
int x,y;
while(x==y)
scanf("%d %d",&x,&y);
{
}
printf("最大公约数=%d\n",yueshu(x,y));
}
编译能通过
用c++运行时如果输入15 5这样的数就有结果,13 14这样的数就没有结果。
用TC30 (已经把汉语改过来了)连接时提示Devide error,我也不知道为虾米。请高手们指点指点啊!!

呵呵,应该是粗心了:

for(i=min;;min--)
改为:
for(i=min;;i--)
就OK了

int yueshu(int x,int y)
{
int max,min,i,a;
if(x>y)
{
max=x;
min=y;
}
if(x<y)
{
max=y;
min=x;
}
for(i=min;;i--) /*这里min--要改成i--*/
{
if(min%i==0&&max%i==0)
{
a=i;break;
}
}
return a;
}
#include<stdio.h>
void main()
{
int x=0,y=0;
/*这里要初始化为相等的一个数为好,否则while循环怕是执行不了*/
while(x==y)
scanf("%d %d",&x,&y);
{
}
printf("最大公约数=%d\n",yueshu(x,y));
}

int yueshu(int x,int y)
{
int max,min,i,a,b=1;
if(x>y)
{
max=x;
min=y;
}
if(x<y)
{
max=y;
min=x;
}
for(i=min;i>0;i--)
{
if(min%i==0&&max%i==0)
{
a=i;b=0;break;
}

}
if(b==0)
return a;
else retu