写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。

这博客是对自己学习的一点点总结及记录,如果您对 Java算法 感兴趣,可以关注我的动态,我们一起学习。

用知识改变命运,让我们的家人过上更好的生活

相关文章

点此查看 【算法系列】 博客文章


一、什么是完数

百度百科这样介绍完数的:
在这里插入图片描述

第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。
后面的完全数还有8128、33550336等等。

三、代码实现

public class PerfectNumber {
    public static void main(String[] args) {
        System.out.println("打印1-1000之间的完数:");
        for (int i = 1; i < 1000; i++) {
            int sum = 0;
            // 求因子
            for (int j = 1; j < i; j++) {
                if (i % j == 0) {
                    sum += j;
                }
            }
            // 如果各个因子的和等于这个数,这个数就是完数
            if (sum == i) {
                System.out.println(i);
            }
        }
    }
}

代码执行结果:

打印1-1000之间的完数:
6
28
496

本文转载:CSDN博客