调整一下语句间的顺序就可以了,就像三楼二楼说的,如果a等于零的话,那么b=m*n/(m%n);这条语句就运行不了了,你可以在取余之后就用if条件做判断。还有就是你的程序好像有局限性吧,假如你的这个程序已经修改好了,但是你这个程序对于某些数据好像不适合吧,比如输入5和7你就得不到你预期的效果。两个数的最大公因数乘最小公倍数等于这两个数的乘积,但是你这个程序中,较大数对较小数取余,得到的余数不代表就是两个最大公因数。所以求最大公因数还是用辗转相除法,或者更相减损术得到最大公因数,然后再用两个数的乘积除以最大公因数从而得到最小公倍数
今天碰巧翻到自己以前编过的程序是求两个数的最大公约数的
你看看
#include "stdio.h"
int main()
{
int m,n,r,t,i;
scanf("%d%d",&m,&n);
if(m>=n)
for(i=0;i<10000;i++)
{
r=m%n;
if(r==0)
{
printf("最大公约数为:%d\n",n);
break;
}
m=n;
n=r;
}
else
{
t=m;
m=n;
n=t;
for(i=0;i<10000;i++)
{
r=m%n;
if(r==0)
{
printf("最大公约数为:%d\n",n);
break;
}
m=n;
n=r;
}
}
return 0;
}
[此贴子已经被作者于2018-11-12 18:40编辑过]