题目
完全数:找出 1000 以内等于真因子之和的数
思路
本题找 1000 以内的完全数:等于其所有真因子(不含自身)之和。 对每个候选 n,令 sum=0,用 i 从 1 到 n/2 找因子,能整除 n 就把 i 加进 sum;若 sum==n 则输出。通常不把 1 当作完全数。
解题分析
真因子不含自身,求 1~n/2 的因子和。1 通常算作完全数(因子和 0 等于自身?1 的因子和 0,有的定义 1 不是完全数,按题目样例对齐)。
完整程序
import java.io.*;
public class Main {
public static void main(String[] args) {
for (int n = 1; n <= 1000; n++) {
int s = 0;
for (int d = 1; d <= n / 2; d++) if (n % d == 0) s += d;
if (s == n) System.out.println(n);
}
}
}
运行示例
输出:
1
6
28
496