C++编完数
编程求500之内的所有“完数”。所谓“完数”是一个数恰好等于它的(包括1在内的)所有不同因子之和,其各位数字立方和等于该数本身。如:6=1+2+3
结果是:1+2+3=6 1+2+3+4+7+14=28 1+2+4+8+16+31+62+124+248=496
如何编??????
[解决办法]
#include <iostream>
#include <cmath>
using namespace std;
int main() {
for(int i = 2; i <= 500; ++i) {
int sum = 0;
for(int j = 1; j <= sqrt((double)i); ++j) {
if(0 == i % j) {
sum += j;
int j2 = i / j;
if(j2 != j && j2 != i)
sum += j2;
}
}
if(sum == i) {
cout < < i < < endl;
}
}
}