题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2
+3.编程找出1000以内的所有完数。
C++代码
使用STL模板库 set
#include <iostream>
#include <set>
using namespace std;
int main()
{
int i = 2;
set<int> se;
for(;i<10000;i++)
{
int ln;
int rn;
int j = i/2;
for(;j>=1;--j)
{
if(i % j ==0)
{
ln = i/j;
se.insert(ln);
se.insert(i/ln);
}
}
set<int>::iterator it=se.begin();
int total = 0;
for(;it != se.end();it++)
total += *it;
total -= i;
if(total == i)
cout<<i<<" ";
se.clear();
}
cout<<endl;
return 0;
}