| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 836 人关注过本帖
标题:求助,如何解决这个死循环
只看楼主 加入收藏
xiaoxia
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2004-11-7
收藏
 问题点数:0 回复次数:4 
求助,如何解决这个死循环

题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程    找出1000以内的所有完数。

我这程序运行时不成功。请各位高手指点,谢谢!

main() { int num=0,i,n,k; for(n=2;n<=1000;n++) {k=n; for(i=1;i<=n;i++) while(n!=i) {if (n%i==0) {num=num+i;n=n/i;} else break;} num=num+n; if (num==k) printf("the number is correct%d",k);

}

搜索更多相关主题的帖子: 如何 编程 number break while 
2004-11-08 19:42
三少爷
Rank: 1
等 级:新手上路
帖 子:192
专家分:0
注 册:2004-4-29
收藏
得分:0 

首先一个善意的忠告,编的时候应该注意一下格式,条理清晰于人于己都便于检查出错误。

n=n/i 别的不看,就看这一句,多余了吧,在n不变的前提下求出除n本身的所有因子,再判断它们之和

是否等于n,是则取,否则扔,再则n自增,重复循环,如是而已。


2004-11-08 20:59
xueer
Rank: 1
等 级:新手上路
威 望:1
帖 子:511
专家分:0
注 册:2004-10-8
收藏
得分:0 

因子是什么啊?

对这个定义不理解。


2004-11-09 16:46
忆楠
Rank: 1
等 级:新手上路
帖 子:721
专家分:0
注 册:2004-7-5
收藏
得分:0 
能被这个数整除的数   叫作这个数的因子  (初中数学中学过   好像这样定义的)

点 鼠 标 , 救 饥 民 http://www./
2004-11-09 18:31
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 

漏洞太多了:

for(i=1;i<=n;i++) 这个循环能不死吗?就死在i=1

还有你内循环的n应该全部换为k

while(n!=i) {if (n%i==0) {num=num+i;n=n/i;} else break;}

while(k%i==0) {num=num+i;k=k/i;}

可以改为

还有……我要睡觉了,自己再查吧——刚才的那些肯定还不止的


我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2004-11-09 21:26
快速回复:求助,如何解决这个死循环
数据加载中...
 
   



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

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