读书人

C++编完数解决方案

发布时间: 2012-03-26 15:46:56 作者: rapoo

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;
}
}
}

读书人网 >C++

热点推荐