| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 644 人关注过本帖
标题:求这个题目的一个算法及源程序
只看楼主 加入收藏
yz1396139
Rank: 2
等 级:论坛游民
帖 子:17
专家分:12
注 册:2009-6-16
结帖率:80%
收藏
已结贴  问题点数:15 回复次数:9 
求这个题目的一个算法及源程序
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
   找出1000以内的所有完数。
搜索更多相关主题的帖子: 算法 
2009-07-23 09:41
gyic_2009
Rank: 2
等 级:论坛游民
帖 子:6
专家分:21
注 册:2009-7-20
收藏
得分:3 
int sum=0;
for(i=1;i<x;i++)
{
    if(x%i==0)
        sum+=sum;
}
if(sum==x)
    是完数;
2009-07-23 09:52
himpo
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:192
专家分:123
注 册:2008-5-16
收藏
得分:3 
楼上你的代码会很慢的...

以下是我从yzfy的论坛上复制来的代码,很快,但说实话,我没看懂...

//Author: maths_dxj
#include<cmath>
#include<cstdio>
#include <basetsd.h>
#include <cstdlib>
void FindPerfect(__int64 &n)
{
    int s[8]={2,3,5,7,13,17,19,31};
        __int64 PerfectNmber;
        __int64 i,j,l;
        for (i=0;i<8;i++)
        {
                l=(__int64)(pow(2,s[i])-1);
                PerfectNmber=(l+1)/2*l;
                if (PerfectNmber>n)return;
                else
    printf("%I64d\n",PerfectNmber);
        }        
        return;
}
int main(void)
{
        __int64 n;
        while (scanf("%I64d",&n)!=EOF)
                FindPerfect(n);
        return 0;
}
2009-07-23 10:04
yz1396139
Rank: 2
等 级:论坛游民
帖 子:17
专家分:12
注 册:2009-6-16
收藏
得分:0 
什么啊这是?看不懂,X的类型是?
2009-07-23 10:05
yz1396139
Rank: 2
等 级:论坛游民
帖 子:17
专家分:12
注 册:2009-6-16
收藏
得分:0 
3楼的代码我也没看懂,嘎嘎!
2009-07-23 10:07
arthaszu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:90
专家分:163
注 册:2009-6-29
收藏
得分:3 
3楼写的是 C++

To  four  years  in  each  other's
2009-07-23 13:29
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
收藏
得分:3 
没文化,真。。。可怕。。

生命不熄,战斗不止.
2009-07-23 14:00
yz1396139
Rank: 2
等 级:论坛游民
帖 子:17
专家分:12
注 册:2009-6-16
收藏
得分:0 
这。。。。
2009-07-23 17:55
huangbaoguo
Rank: 1
等 级:新手上路
帖 子:28
专家分:4
注 册:2009-4-6
收藏
得分:3 
#include<stdio.h>
#include<conio.h>  //包含getch()函数
int main()   
  {
    int   i,j;   
    int   s=0;   
   
    for(i=1;i<1001;i++)   
    {
        for(j=1;j<i;j++)   
        {
            if(i%j==0)   s+=j;     //如果j可以被i整除
        }   
            if(s==i)               //如果这个数等于它的因子之和
            {
                printf("%d   its   factors   are\t",i);     //输出这个数的因子为   
                 for(j=1;j<i;j++)   
                  {
                     if(i%j==0)   
                    printf("%4d",j);   
   
                  }   
              printf("\n");   
            }   
            s=0;   
          }   
    getch();
    return 0;
  }
2009-07-23 18:57
huangbaoguo
Rank: 1
等 级:新手上路
帖 子:28
专家分:4
注 册:2009-4-6
收藏
得分:0 
#include<stdio.h>
#include<conio.h>  //包含getch()函数
int main()   
  {
    int   i,j;   
    int   s=0;   
   
    for(i=1;i<1001;i++)   
    {
        for(j=1;j<i;j++)   
        {
            if(i%j==0)   s+=j;     //如果j可以被i整除
        }   
            if(s==i)               //如果这个数等于它的因子之和
            {
                printf("%d   its   factors   are\t",i);     //输出这个数的因子为   
                 for(j=1;j<i;j++)   
                  {
                     if(i%j==0)   
                    printf("%4d",j);   
   
                  }   
              printf("\n");   
            }   
            s=0;   
          }   
    getch();
    return 0;
  }
2009-07-23 18:59
快速回复:求这个题目的一个算法及源程序
数据加载中...
 
   



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

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