题目来源:
leetcode题目,网址:507. 完美数 - 力扣(LeetCode)
解题思路:
首先判断所给数字是否是 1 ,若是返回 false。然后将从 1 到 num 的平方根内能被 num 整除的数字及其与 num 的商累加,若累加结果等于 num的两倍,则该数是完美数,返回true,否则不是,返回 false。
解题代码:
class Solution {
public boolean checkPerfectNumber(int num) {
if(num==1) //1不是完美数
return false;
int sum=0;
for(int i=1;i<=Math.sqrt(num);i++){
if(num%i==0){
sum+=i;
sum+=num/i;
}
}
return sum-num==num? true:false;
}
}
总结:
注意 1 不是完美数即可。
官方题解给出了枚举所有真因子和穷举完美数两种解法。