美文网首页
507-完美数

507-完美数

作者: 饮酒醉回忆 | 来源:发表于2019-12-06 10:10 被阅读0次

    完美数

    题目

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

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

    示例:

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

    提示:

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

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

    思路

    比较简单的思路就是找到整数n的所有正因子并求和.

    而数学上有对应的公式,套进来解决的话会更简单

    代码

    简单思路

    class Solution {
        public boolean checkPerfectNumber(int num) {
            if(num <= 0){
                return false;
            }
            int sum = 0;
            for(int i = 1;i *i<=num;i++){
                if(num % i == 0){
                    sum+=i;
                    if(i*i != num){
                        sum+=num/i;
                    }
                }
            }
            return sum == num*2;
        }
    }
    

    领扣官方思路,数学公式

    public class Solution {
        public int pn(int p) {
            return (1 << (p - 1)) * ((1 << p) - 1);
        }
        public boolean checkPerfectNumber(int num) {
            int[] primes=new int[]{2,3,5,7,13,17,19,31};
            for (int prime: primes) {
                if (pn(prime) == num)
                    return true;
            }
            return false;
        }
    }
    
    作者:LeetCode
    链接:https://leetcode-cn.com/problems/perfect-number/solution/wan-mei-shu-by-leetcode/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    

    相关文章

      网友评论

          本文标题:507-完美数

          本文链接:https://www.haomeiwen.com/subject/rsmsgctx.html