| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 22778 人关注过本帖
标题:输出1000以内的所有完数及其因子
只看楼主 加入收藏
lxvip110
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-3-26
收藏
 问题点数:0 回复次数:11 
输出1000以内的所有完数及其因子
编写程序,输出1000以内的所有完数及其因子,所谓完数是指一个整数的值等于它的因子之和,例如6的因子是1,2,3.而6=1+2+3,故6是一个完数。

大家帮帮忙
搜索更多相关主题的帖子: 输出 
2008-04-07 20:09
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
收藏
得分:0 
因子是什么?? 求解     因子出来了直接循环 里面加判断

------...-.-..-...-----........-------.......----.....------....||- - !
2008-04-07 21:00
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
直接要代码的,不是学习的好孩子

" border="0" />
2008-04-07 21:30
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
呵呵..飞燕像在哄小朋友似得...

学习需要安静。。海盗要重新来过。。
2008-04-07 21:40
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
[bo]以下是引用 [un]sunkaidong[/un] 在 2008-4-7 21:40 的发言:[/bo]

呵呵..飞燕像在哄小朋友似得...

不是像,是分明

" border="0" />
2008-04-07 23:30
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
请大家看明白,LZ没在要代码,他哪句话说是要代码了?可以把运算方法与方向告诉他,或者写些伪代码给他。那样就是给了他提示了,他自己也可以思考。

    要代码的人很多,可是LZ是不是这样的人,还有待商榷,不要一棍子打死一群人,也不要见秃子就以为是和尚。
2008-04-08 00:24
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
既然说他要代码,我就给他吧
程序代码:
/*
    自己作的一个小程序,也经历了一些小问题,但总算解决了。
    这个事例告诉我自己:虽然明白了道理,但也要去实践,许多看似明白的东西,到了实践中才知道其实根本没明白。
    
    程序是写出来的,不是要出来的,也不是教出来的。

    希望LZ能学好程序,与你共勉!
*/
#include<stdio.h>
#define N 100
int main(void)
{
        int i,j,k=0,yinzi[N];
        for(i=2;i<1001;i++)
        {
                yinzi[99]=0;
                for(j=1;j<i;j++)
                        if(i%j==0)
                                yinzi[k++]=j;
                for(j=0;j<k;j++)
                        yinzi[99]+=yinzi[j];
                if(i==yinzi[99])
                {
                        printf("%d是完数,它的因子分别为:\n",i);
                        for(j=0;j<k;j++)
                                printf("%d\n",yinzi[j]);
                }
                k=0;
       }
       getch();
}
2008-04-08 01:10
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
只因为楼上的,你见这种见的太少
见多了你就知道了

" border="0" />
2008-04-08 08:56
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
完数不多``不多不多```

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-04-08 12:30
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
收藏
得分:0 
完全数
【定义】若一个自然数,恰好与除去它本身以外的一切因数的和相等,这种数叫做完全数。
例如,
6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248
8128=1+2+4+8+16+32+64+127+254+508+1016+2032+4064
【公式】大数学家欧几里德曾推算出完全数的获得公式:
如果2^p-1质数,那么(2^p-1)2^(p-1)便是一个完全数。
p=2,2^p-1=3是质数,(2^p-1)2^(p-1)=3*2=6,
p=3,2^p-1=7是质数,(2^p-1)2^(p-1)=7*4=28

有了上面的理论,是不是容易多了...
#include<stdio.h>
#include<math.h>
#define MAX 1000
int main(void)
{
    int prime,temp;
    int p = 2,i = 2;
    printf("1000以内的完全数是:\n");
    while (1)
    {
          prime = pow(2,p)-1;
          temp = (pow(2,p)-1)*pow(2,(p-1));
          if(temp > MAX)break;
          while (i <= sqrt(prime))//验证prime是否是质数
          {
               
                if (prime%i == 0)
                   break;
                i++;
          }
          if (i >sqrt(prime))
             printf("%d\t",temp);
          p++;
    }
    getch();
    return 0;
}

[[it] 本帖最后由 meteor57 于 2008-4-8 14:29 编辑 [/it]]
2008-04-08 14:25
快速回复:输出1000以内的所有完数及其因子
数据加载中...
 
   



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

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