完数:是指一个数恰好等于它所有不同因子之和,例如6是完数
6 = 1 + 2 + 3
思路:先把小于10000的完数计算出来,放在向量中,然后对于每个n,只需在向量中打印每个完整的数,知道n之内的完数即可
#include<iostream>
#include<vector>
using namespace std;
int main(int argc,char * argv[])
{
vector <int> a;
for(int i=2;i<=10000;i+=2)
{
int sum = 1;
for(int j = 2;j<=i/2;j++)
{
if(i%j == 0)
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;
}