| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 906 人关注过本帖
标题:请教各位一个题目
只看楼主 加入收藏
水上漂
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-9-10
收藏
 问题点数:0 回复次数:9 
请教各位一个题目
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。
2008-09-23 10:36
hp15265615
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-9-9
收藏
得分:0 
没有编,简单考虑了一下不知道对不对:
做到1到1000的循环,顺序找到每个数的因数,如6,计算6%1、6%2,6%3……6%5.有余数即不是因数。求因数的和s,判断与6相等(6=1+2+3),若相等输出,继续下个数;不相等继续下个数。
不是很难

有时间编一下程序供大家指正!

[[it] 本帖最后由 hp15265615 于 2008-9-23 11:03 编辑 [/it]]
2008-09-23 10:54
josen0205
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:307
专家分:52
注 册:2007-5-8
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    int i = 0, j = 0, sum = 1;
    char str[512];

    for(i = 2; i <= 1000; i ++)
    {
        sum = 1;
        memset(str, 0x00, sizeof(str));

        sprintf(str, "%d", sum);
        for(j = 2; j < i; j ++)
        {
            if(0 == i%j)
            {
                sum += j;
                sprintf(str+strlen(str), " + %d", j);
            }
        }
        if(sum == i)
            printf("%4d = %s\n", sum, str);
    }
    return 0;
}

只有想不到,没有做不到
2008-09-23 15:37
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
收藏
得分:0 
#include <stdio.h>
#include <math.h>
int main()
{
    long n,zp,zk,i;
    for(n=2;n<20;n++)
    {
        zp=(long)pow(2,n)-1;
        for(i=2,zk=(long)sqrt(zp);i<=zk;i++) if(zp%i==0) break;
        if(i>zk) printf("%.lf\n",(pow(2,n-1)*zp));
    }
    return 0;
}
2008-09-24 16:27
语文不及格
Rank: 1
等 级:新手上路
帖 子:30
专家分:2
注 册:2008-3-20
收藏
得分:0 
去下一个 C语言经典例题100例
百度上大把有,这个可能合适现在程度的你!
2008-09-24 16:34
水上漂
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-9-10
收藏
得分:0 
恩 那个上面的源程序我看过 不过看不懂 好像不太对 它上面那个

不想当将军的裁缝不是好厨子
2008-09-25 15:34
w0nfer
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-9-4
收藏
得分:0 
#include <stdio.h>
 int main()
{
int num;
int i;
for(num=1;num<=1000;num++)
{        int sun=0;
    for(i=1;i<=(num/2);i++)
    {         
        if(num%i==0)
        { sum=sum+i;}
    }
if(sum==num) printf("%d\n",num);
}
}

[[it] 本帖最后由 w0nfer 于 2008-9-25 17:40 编辑 [/it]]
2008-09-25 17:28
进步一点点
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2008-4-21
收藏
得分:0 
#include "stdio.h"
int f(n)
{int i,y=0;
    for(i=1;i<n;i++)
      if(n%i==0)
         y+=i;  
      return y;
}
 main()
{int  n;
    for(n=1;n<1000;n++)  
      if(n==f(n))
        printf("%d   ",n);
2008-09-25 23:55
水上漂
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-9-10
收藏
得分:0 
谢谢各位了 各位的程序都可以 运行结果也正确  w0nfer的代码那个 应该是 int sum=0吧 呵呵;
谢谢各位了

不想当将军的裁缝不是好厨子
2008-09-26 17:15
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
收藏
得分:0 
哪个速度更快呢LZ - -
2008-09-26 21:53
快速回复:请教各位一个题目
数据加载中...
 
   



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

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