题目

完全数:找出 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