最大公约数代码执行问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 07:53:23
源代码在C编译器中无错,但是运行后,输入88,12回车后,得到的结果是Divide error。我知道Divide error的意思,请问为什么我的代码会得到这个结果?原因是什么?

源代码:
main()
{
int m,n,r,w;
printf("Please input two numbers like 'm,n'.\n");
scanf("%d,%d",&m,&n);
if(m<n)
{
w=m;
m=n;
n=w;
}
while(m%n!=0)
{
m=n;
n=m%n;
}
printf("G.C.D is %d.\n",n);
}

while 语句错误.
if语句纯属多余.
看我的,你应该会明白吧.顺便教你最小公倍数.
main()
{
int m,n,m1,n1,a;
printf("input two number:");
scanf("%d%d",&m,&n);
m1=m;
n1=n; /*保留m,n的原值,以便最后求最小公倍数*/
a=m1%n1;
while(a!=0)
{
m1=n1;n1=a;a=m1%n1;
}
printf("zui da gong yue shu wei:%d\n",n1);
printf("zui xiao gong bei shu wei:%d",m*n/n1);
}

/*
此题是用碾转相除法求最大公约数。
最大公约数的求法是:两个数相除,如果不能除断,则用除数作被除数,余数做除数,
一直除到余数为0为止,此刻除数则为最大公约数。
最小公倍数求法:两个数的积除以最大公约数。
*/

printf("Please input two numbers like 'm,n'.\n"); 这么写不对吧
还有
while(m%n!=0)
{
m=n; 这里是赋值语句
n=m%n; 下面这句 N就得0了啊 写错了吧
}