一个C语言简单程序
输入两个正整数m和n,求其最大公约数和最小公倍数. 程序是这样的:
main()
{int p,r,n,m,temp;
scanf("%d,%d",&n,&m);
if(n<m)
{temp=n;
n=m;
m=temp;
}
p=n*m; /*先将n和m的乘积保存在p中,求最小公倍数时用 */
while(m!=0) /*求n和m的最大公约数*/
{r=n%m;
n=m;
m=r;
}
printf("最大公约数为:%d\n",n);
printf("最小公倍数为:%d\n",p/n);
}
这个程序我自己从机器上运行没问题,可不理解的地方是while语句中嵌套的内容把r定义为什么?
还有,如果我把n和m分别设成5和9的时候,嵌套语句(1)r=9%5求于的值为4,(2)n=m是把m的值赋予
n,n就为5,(3)m=r是把r的值4赋予m
然而最后输出最大公约数的值却输出n,我不理解这是为何~小弟头脑愚笨~还望各位不吝赐教!!谢谢
[此贴子已经被作者于2004-06-17 13:49:54编辑过]