题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
思路:
// 6=1+2+3
// 28 = 1 + 2 + 4 + 7 + 14
// 496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
//上面三个数都是完数。而且它们有一个共同的规律,就是最大的数为x/2;
//所以在找其他因数时,范围只要定在1~x/2就可以了。
程序代码:
#includeusing namespace std; // 思路: // 6=1+2+3 // 28 = 1 + 2 + 4 + 7 + 14 // 496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 //上面三个数都是完数。而且它们有一个共同的规律,就是最大的数为x/2; //所以在找其他因数时,范围只要定在1~x/2就可以了。 int main() { int sum, i, j; for (i = 1; i <= 1000; i++) { sum = 0; for (j = 1; j <= i / 2; j++) { if (i % j == 0) sum += j; } if (sum == i) cout << i << ' '; } return 0; }



