| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 793 人关注过本帖
标题:1000 以内完数 请各位帮忙简化算法
只看楼主 加入收藏
a874695162
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2014-7-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
1000 以内完数 请各位帮忙简化算法
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{   cout<<"1000以内的完数如下:"<<endl;
    int a,b,i;
    int t;
    for(a=2;a<=1000;a++)
    {t=0;
        for(b=1;b<a;b++)
            if(a%b==0)t=t+b;
    if(t==a)
    {cout<<a<<":";
    cout<<"它的因数是:"<<" ";
     for(b=1;b<a;b++)
       if(a%b==0)cout<<b<<" ";
     cout<<endl;
    }
    }
return 0;
    }
搜索更多相关主题的帖子: include 
2014-07-22 20:21
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
你这个代码是完整的吗  完数在哪里

DO IT YOURSELF !
2014-07-23 08:35
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:7 
不错啊  你已经写出来了,不需要简化了吧

三十年河东,三十年河西,莫欺少年穷!
2014-07-23 08:57
i80286
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:99
专家分:428
注 册:2013-9-30
收藏
得分:8 
算法上是可以简化一些,我也写了一个(头文件略),你比较一下:
void perfect_number(int &number)
{
    vector<int> NUM;
    for (int i = 2; i <= number; i++)
    {
        int SUM = 0;
        NUM.clear();
        for (int j = 1; j <i/2; j++)
        {
            if ((i%j == 0)&& (i/j>j))
            {
                NUM.push_back(j);
                if (j != 1 )
                    NUM.push_back(i/j);
            }
        }
        for (vector<int>::iterator iter = NUM.begin(); iter != NUM.end(); iter++)
        {
            SUM += (*iter);
        }
        if (SUM == i)
        {
            sort(NUM.begin(),NUM.end());
            cout << i << "的因式包括:";
            for (vector<int>::iterator iter = NUM.begin(); iter != NUM.end(); iter++)
                cout << (*iter) << "  ";
            cout << endl;
        }
    }
}

int main()
{
    int number;
    cin >> number;
    if (number>2)
        perfect_number(number);
    system("pause");
    return 0;
}
2014-07-23 13:37
a874695162
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2014-7-21
收藏
得分:0 
回复 2 楼 wp231957
输出的a即完数

加油,再加油!编程,再编程!
2014-07-24 06:07
午夜小学徒
Rank: 2
等 级:论坛游民
威 望:3
帖 子:52
专家分:40
注 册:2014-7-17
收藏
得分:0 
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为“完全数”。
例如: 第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等。
2014-08-02 15:52
午夜小学徒
Rank: 2
等 级:论坛游民
威 望:3
帖 子:52
专家分:40
注 册:2014-7-17
收藏
得分:0 
你自己看看啊,你的i没有用啊,而且少输入了:8128!!!
2014-08-02 15:56
午夜小学徒
Rank: 2
等 级:论坛游民
威 望:3
帖 子:52
专家分:40
注 册:2014-7-17
收藏
得分:0 
坑了,还以为是10000呢
2014-08-02 15:57
午夜小学徒
Rank: 2
等 级:论坛游民
威 望:3
帖 子:52
专家分:40
注 册:2014-7-17
收藏
得分:0 
可以利用一下 宏 定义啊!1000太局限了啊,还要改
2014-08-02 15:57
a874695162
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2014-7-21
收藏
得分:0 
多谢小学徒指点,i确实没用到   这只是个练习程序,没必要用宏定义。

加油,再加油!编程,再编程!
2014-08-12 19:35
快速回复:1000 以内完数 请各位帮忙简化算法
数据加载中...
 
   



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

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