public class PerfectNumbers {
public static void main(String[] args) {
System.out.println("1000以内的完数:");
for (int num = 2; num <= 1000; num++) {
int sum = 1; // 初始值为1(所有数都有因子1)
// 仅遍历到平方根优化计算
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
sum += i; // 累加小因子
int counterpart = num / i;
if (counterpart != i) {
sum += counterpart; // 累加大因子(避免平方数重复)
}
}
}
// 验证完数条件(因子和等于自身)
if (sum == num) {
System.out.printf("%-4d → 因子:1", num);
// 完整因子输出
for (int i = 2; i <= num/2; i++) {
if (num % i == 0) System.out.printf(" + %d", i);
}
System.out.println();
}
}
}
}
Java程序:求1000以内的所有完数
最新推荐文章于 2025-05-20 15:34:30 发布