题目描述
我们定义完美数是一个正整数,它等于除其自身之外的所有正约数的总和。 现在,给定一个整数 n,写一个函数,当它是一个完美的数字时返回true,而当它不是时返回false。
条件:输入数字n不会超过100,000,000
例:
输入: 28 输出: True 解释: 28 = 1 + 2 + 4 + 7 + 14
完美数的概念: 这个数它所有的真因子也就是除了自身以外的约数的和,恰好等于它本身
这道题直接就是百度搜的完美数,发现有个回答说截止到2018年也就是50来个完美数下面摘取部分:
第一个数是6,第二个数是28等。第三个数是496,第四个数是8128,第五个数是33550336,第六个数是8589869056,第七个数是137438691328等
这道题的条件是数字n不会超过100,000,000.那么这里面只有前五个符合标准,后面都超出了条件范围.
那就很好办了,直接写个return判断是否符合这5个数就行了
class Solution {
public boolean checkPerfectNumber(int num) {
return num == 6 || num == 28 || num == 496 || num == 8128 || num == 33550336;
}
}