| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7794 人关注过本帖
标题:求2-1000的所有完数
只看楼主 加入收藏
mi1992
Rank: 2
等 级:论坛游民
帖 子:21
专家分:13
注 册:2010-4-23
结帖率:62.5%
收藏
已结贴  问题点数:20 回复次数:8 
求2-1000的所有完数
完数是指:该数的各因子之和正好等于本身。例如:6=1+2+3   
#include<stdio.h>
void main()
{int n,i,x=0;
for(n=2;n<=1000;n++)
{
    for(i=1;i<=n/2;i++)
    { if(n%i)  continue;
        x+=i;
    }
    printf("%d\n ",x);
    if(n==x) printf("完数是%d\n",n); x=0;}
}我得到是些乱七八糟的数,但如果把倒数第2行  printf("%d\n ",x);
去掉,好像就好了,请问高手,这是怎么回事?    我是新手。
搜索更多相关主题的帖子: 因子 
2010-04-25 22:33
woodydongli
Rank: 2
等 级:论坛游民
帖 子:57
专家分:84
注 册:2010-4-4
收藏
得分:10 
#include<stdio.h>
void main()
{int n,i,x=0;
for(n=2;n<=1000;n++)
{
    for(i=1;i<=n/2;i++)
    { if(n%i)  continue;
        x+=i;
    }
    printf("%d\n ",x);
    if(n==x) printf("完数是%d\n",n); x=0;}
}
在第一个for里每次应该把x重新赋值为0;而且没有必要输出printf("%d\n ",x);这一行。。这一行是把每个数的因数和输出。
2010-04-25 22:39
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
  又慢了   不过求完数的思路学习了
2010-04-25 22:49
azenis
Rank: 1
等 级:新手上路
帖 子:14
专家分:7
注 册:2010-4-24
收藏
得分:4 
当然了,你那些x都是一些因素的和,并不是所有的完数才输出的!
2010-04-26 13:59
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:6 
#include<stdio.h>
void main()
{
    int n,i,x=0;
    for(n=2;n<=1000;n++)
    {
        for(i=1;i<=n/2;i++)
        {
             if(n%i)
                continue;
             else
                x+=i;
        }
        printf("%d\n ",x);
        if(n==x)
            printf("完数是%d\n",n);
        x=0;
    }
}
 if(n%i)要有else的,要不然不管 i 是不是约数都被加了
2010-04-26 14:08
mi1992
Rank: 2
等 级:论坛游民
帖 子:21
专家分:13
注 册:2010-4-23
收藏
得分:0 
回复 2楼 woodydongli
先谢谢你……呵呵,那个倒数第2行printf("%d\n ",x);
我是无意中加的,开始以为加不加无所谓,但加了之后后面的那个输出完数的printf函数 好像就没作用……不知道怎么回事?
2010-04-26 20:28
mi1992
Rank: 2
等 级:论坛游民
帖 子:21
专家分:13
注 册:2010-4-23
收藏
得分:0 
回复 5楼 韩明海
有个continue函数,如果当n%i不为零时,会执行,那么下面的部分就不会被执行吧,所以应该不需要用else 吧
2010-04-26 20:32
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:0 
回复 7楼 mi1992
对,你说的很对,我那么些是让结构更清晰,保持if....else的结构性
2010-04-28 10:31
mi1992
Rank: 2
等 级:论坛游民
帖 子:21
专家分:13
注 册:2010-4-23
收藏
得分:0 
回复 8楼 韩明海
多谢……
2010-04-28 12:24
快速回复:求2-1000的所有完数
数据加载中...
 
   



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

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