Java判断一个数是否是完全数

什么是完全数
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。

从概念可以得到:判断一个数是不是完全数,需要将其所有因子相加(除自身因子外),等于这个数,则是完全数。
那么第一步就是获取因子列表 a1,a2,a3…
第二步验证是否相等 a1+a2+a3+… == x

看代码:

/**
 * 判断一个数是完全数
 */
public class TestPerfectNumber {

    public static void main(String[] args) {
        System.out.println(check(6));//是
        System.out.println(check(5));
        System.out.println(check(28));//是
        System.out.println(check(27));
        System.out.println(check(496));//是
        System.out.println(check(495));
    }

    static boolean check(int x) {
        if(x<=0) {
            return false;
        }
        int sum = 0;
        for(int i=1; i<=x/2; i++) {
            if(x%i==0) {
                sum += i;
            }
        }
        if(sum==x) {
            return true;
        }

        return false;
    }
}
/*
true
false
true
false
true
false
 */