一个数如果恰好等于它的因子之和,这个数就称为 "完数"。例如。编程找出 1000 以内的所有完数。
完数是指一个正整数,它等于其所有真因子(即除了自身以外的正因子)之和。
例如:6 的真因子是 1, 2, 3,且,所以 6 是完数。
注意:1 没有真因子(因为真因子必须小于该数),所以 1 不是完数。
程序运行后输出:
6 its factors are: 1, 2, 3,
28 its factors are: 1, 2, 4, 7, 14,
496 its factors are: 1, 2, 4, 8, 16, 31, 62, 124, 248, 注:1000 以内只有三个完数:6、28、496。
完数非常稀少,且与梅森素数密切相关。
欧几里得证明了:
若 是素数(称为梅森素数),则
是一个偶完数。
前几个对应关系:
8128 超出 1000,故不在结果中。
至今未发现奇完数,数学界普遍认为可能不存在奇完数,但尚未被证明。
public class Demo09 {
public static void main(String[] args) {
for (int i = 2; i < 1000; i++) { // 从2开始,1不可能是完数
int sum = 0;
// 只需检查到 i/2
for (int j = 1; j <= i / 2; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
System.out.print(i + " its factors are: ");
for (int j = 1; j <= i / 2; j++) {
if (i % j == 0) {
System.out.print(j + ", ");
}
}
System.out.println();
}
}
}
}历史:完数的研究可追溯至古希腊毕达哥拉斯学派(公元前 6 世纪),他们认为完数具有神秘和谐之美。
已知完数:截至 2024 年,人类共发现 51 个完数,全部为偶数,且都符合欧几里得 - 欧拉公式。
最大已知完数:对应,有超过 4900 万位数字。