杰瑞科技汇

java找出1000以内的所有完 数

Java找出1000以内的所有完数

完数是指一个数等于它的所有真因子(除了自身的约数)之和的数,6的真因子是1、2、3,而1+2+3=6,所以6是一个完数。

java找出1000以内的所有完 数-图1
(图片来源网络,侵删)

以下是Java代码实现:

public class PerfectNumbers {
    public static void main(String[] args) {
        System.out.println("1000以内的完数有:");
        for (int i = 2; i <= 1000; i++) {
            if (isPerfectNumber(i)) {
                System.out.print(i + " ");
            }
        }
    }
    // 判断一个数是否是完数
    public static boolean isPerfectNumber(int num) {
        if (num <= 1) {
            return false;
        }
        int sum = 1; // 1是所有大于1的数的真因子
        // 遍历从2到sqrt(num)的所有可能的因子
        for (int i = 2; i * i <= num; i++) {
            if (num % i == 0) {
                sum += i;
                // 如果i和num/i不相等,则加上num/i
                if (i * i != num) {
                    sum += num / i;
                }
            }
        }
        return sum == num;
    }
}

代码说明

  1. main方法遍历2到1000的所有数字,调用isPerfectNumber方法判断是否为完数,如果是则输出。

  2. isPerfectNumber方法实现:

    • 首先处理边界情况(num ≤ 1直接返回false)
    • 初始化sum为1(因为1是所有大于1的数的真因子)
    • 遍历从2到√num的所有可能的因子
    • 如果找到因子i,则同时加上i和num/i(除非i和num/i相等)
    • 最后比较sum和num是否相等

输出结果

运行上述代码将输出:

java找出1000以内的所有完 数-图2
(图片来源网络,侵删)
1000以内的完数有:
6 28 496 

这三个数就是1000以内的所有完数。

java找出1000以内的所有完 数-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇