| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1266 人关注过本帖, 1 人收藏
标题:一个C语言简单程序
只看楼主 加入收藏
今晚打老虎
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2004-6-16
收藏(1)
 问题点数:0 回复次数:3 
一个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编辑过]

搜索更多相关主题的帖子: C语言 
2004-06-17 13:16
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
收藏
得分:0 
这是辗转相除法求最大公约数,就是用大数除以小数,然后只要余数不为0,再用被除数去除余数,直到余数为0

我的主页 http://www.
2004-06-17 19:51
今晚打老虎
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2004-6-16
收藏
得分:0 

谢谢斑猪哥哥提示~这些明朗多了!


愿上帝与菜鸟同在!阿门
2004-06-17 20:50
xinwu
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2004-6-19
收藏
得分:0 
这里运用的是辗转相除法

我永远相信数目,逻辑能带来理由!
2004-06-19 17:52
快速回复:一个C语言简单程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015939 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved