| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 675 人关注过本帖
标题:这问题出在什么地方 2000以内的完数
只看楼主 加入收藏
fz19910125
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:52
专家分:11
注 册:2010-10-12
结帖率:84.62%
收藏
 问题点数:0 回复次数:2 
这问题出在什么地方 2000以内的完数
程序代码:
// 2000以内所有的完数.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "iostream"
using namespace std;
void IfWan(int a,int* end)
{
    int j,sum=0,count=0;
    for(j=1;j<a;j++)
    {
        if(a%j==0)
        {
            sum+=j;
        }
    }
    if(sum==a)
    {
        end[count]=a;
        count++;
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    int jg[100]={0};
    for(int i=1;i<2000;i++)
    {
        IfWan(i,jg);
    }   
    for(int j=0;j<100;j++)
    {
        cout<<jg[j]<<endl;
    }
    system("pause");
    return 0;
}
怎么输出的结果为496啊??
搜索更多相关主题的帖子: 应用程序 控制台 
2011-11-18 14:42
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
// 2000以内所有的完数.cpp : 定义控制台应用程序的入口点。
//

//#include "stdafx.h"
#include "iostream"
using namespace std;
bool IfWan(int a)
{
    int j,sum=0,count=0;
    for(j=1;j<a;j++)
    {
        if(a%j==0)
        {
            sum+=j;
        }
    }
    if(sum==a)
        return true;
   
    return false;
}

int main()
{
    int jg[100]={0};
    int    j = 0;
    for(int i=1;i<2000;i++)
    {
        if (IfWan(i))
            jg[j++] = i;
    }   
    for(j=0;j<100;j++)
    {
        cout<<jg[j]<<endl;
    }
    system("pause");
    return 0;
}

哪有那么多完数啊,到现在为止才找出47个而已,第47个数有好几百万位,用那么多空间太浪费。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-11-23 20:50
hxcet
Rank: 4
等 级:业余侠客
帖 子:78
专家分:229
注 册:2011-11-15
收藏
得分:0 
因为你用for循环每代入一次IfWan函数,函数内的count又被重置为0,函数体内最后的count++;实际上一直没有起到作用。。。所以最后你只把end[0]=496存入了。。
2011-11-24 12:09
快速回复:这问题出在什么地方 2000以内的完数
数据加载中...
 
   



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

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