507-完美数

507-完美数

对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。

给定一个 整数 n, 如果他是完美数,返回 True,否则返回 False

示例:

输入: 28
输出: True
解释: 28 = 1 + 2 + 4 + 7 + 14

提示:

输入的数字 n 不会超过 100,000,000. (1e8)

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/perfect-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    public boolean checkPerfectNumber(int num) {
        // 1.找出所有因子,求和
        if(num == 1) return false;

        int sum = 0;
        int refactor = 2;
        double sqrt = Math.sqrt(num);
        while (refactor < sqrt) {
            if(num % refactor == 0) {
                sum = sum + refactor + num / refactor;
            }
            refactor++;
        }

        if(refactor == sqrt) {
            sum = sum + refactor;
        }
        return sum + 1 == num;

        // 2.
//        switch(num) {
//            case 6:
//            case 28:
//            case 496:
//            case 8128:
//            case 33550336:
//                return true;
//        }
//        return false;

    }

猜你喜欢

转载自www.cnblogs.com/angelica-duhurica/p/12230822.html
今日推荐