ACM——完数

完数

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
总提交:1930            测试通过:413

描述

自然数中,完数寥若晨星,请在从1到某个整数范围中打印出所有的完数来。所谓“完数”是指一个数恰好等于它的所有不同因子之和。例如,6是完数,因为6=1+2+3。而24不是完数,因为24≠1+2+3+4+6+8+12=36。

输入

输入数据中含有一些整数n(1<n<10000)。

输出

对于每个整数n,输出所有不大于n的完数。每个整数n的输出由n引导,跟上冒号,然后是由空格开道的一个个完数,每个n的完数列表应占独立的一行。

样例输入

100
5000

样例输出

100: 6 28
5000: 6 28 496

#include <iostream>

#include <vector>

using namespace std;

 

int main()

{

    vector<int> a;

    for(int i=2;i<10000;i++)

    {

            int sum=1;

            for(int j=2;j<=i/2;j++)

            {

                    if(i%j==0) sum=sum+j;

            }

            if(sum==i) a.push_back(i);

    }

     

    int n;

    while(cin>>n)

    {

                 cout<<n<<":";

                 for(int i=0;i<a.size();i++)

                 {

                         if(a[i]<=n) cout<<" "<<a[i];

                 }

                 cout<<endl;

    }

    return 0;

}

 

你可能感兴趣的:(ACM)