| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 697 人关注过本帖
标题:求完数,我觉得算法没问题,但就是死循环,不知哪里少了一步,谢谢各位帮忙
取消只看楼主 加入收藏
tony0708
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2009-4-21
结帖率:100%
收藏
 问题点数:0 回复次数:2 
求完数,我觉得算法没问题,但就是死循环,不知哪里少了一步,谢谢各位帮忙
求1-1000的完数,就是一个数敲好等于它的因子之和,比如6=1+2+3,28=1+2+4+7+14,答案是1-1000有三个,我编的显示是28,而且一直有很多,是死循环,想请各位有时间把我看看,谢谢了



#include<stdio.h>
void main()
{
    int m,i,a[10]={0},j=0;        /*数组用来存放因子,因为1024是10个2相乘,小于1000的数因子个数肯定由此小于10,所以定义了10*/
    for(m=2;m<1000;m++)
    {
        for(i=0;i<10;i++)        /*让数组中元素每次开始都为,且j=0,都从0开始存放*/
            a[i]=0;
            j=0;
        
        for(i=1;i<m;i++)        /*求因子*/
        {
            if(m%i==0)
            {a[j]=i;j++;}
        }
        
        if(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]==m)
            printf("%d\n",m);
   
    }
}



[ 本帖最后由 tony0708 于 2009-10-29 10:56 编辑 ]
搜索更多相关主题的帖子: 算法 
2009-10-29 10:52
tony0708
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2009-4-21
收藏
得分:0 
回复 2楼 UserYuH
晓得了,谢谢。
我理解错了,以为因子总个数不超过10,其实有的。
谢谢啦
2009-10-29 12:35
tony0708
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2009-4-21
收藏
得分:0 
回复 7楼 dengjun000
#include <stdio.h>
void main()
{
  int sum=0,i,j;
  for(i=1;i<1001;i++)
  {
    sum=0;
for(j=1;j<i;j++)
    {
      if(i%j==0)
      sum+=j;
    }
    if(sum==i)
    {printf("%d\n",sum);
    }
}
}

改动了几个地方:
1,main()改成void main(),我们书上都有void的,呵呵
2.去掉了getch,看不懂。
3.加了\n,这样结果方便显示。
4,最重要的地方,加一个sum=0;
因为你每次i循环结束,不加sum=0的话,后面结果就不对了,你想想,很容易理解的
2009-10-29 14:04
快速回复:求完数,我觉得算法没问题,但就是死循环,不知哪里少了一步,谢谢各位 ...
数据加载中...
 
   



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

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