题目
完全数:找出 1000 以内等于真因子之和的数
思路
本题找 1000 以内的完全数:等于其所有真因子(不含自身)之和。
对每个候选 n,令 sum=0,用 i 从 1 到 n/2 找因子,能整除 n 就把 i 加进 sum;若 sum==n 则输出。通常不把 1 当作完全数。
解题分析
真因子不含自身,求 1~n/2 的因子和。1 通常算作完全数(因子和 0 等于自身?1 的因子和 0,有的定义 1 不是完全数,按题目样例对齐)。
完整程序
#include <stdio.h>
int main(void)
{
for (int n = 1; n <= 1000; n++) {
int sum = 0;
for (int d = 1; d <= n / 2; d++) {
if (n % d == 0) {
sum += d;
}
}
if (sum == n) {
printf("%d\n", n);
}
}
return 0;
}
运行示例
程序不需要从键盘读入,直接运行。输出如下:
1
6
28
496