1.题目
对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。
给定一个 整数 n, 如果是完美数,返回 true,否则返回 false
示例:
输入:28输出:True解释:28 = 1 + 2 + 4 + 7 + 141, 2, 4, 7, 和 14 是 28 的所有正因子。输入:num = 6输出:true输入:num = 496输出:true输入:num = 8128输出:true输入:num = 2输出:false
提示:
1 <= num <= 108
2.思路
public boolean checkPerfectNumber(int num) {if(num == 1) {return false;}int sum = 1; // 正整数一定会有一个1,同时不用考虑自身,所以单独处理int i = 2;double sqrt = Math.sqrt(num);for(;i < sqrt;i++) {if(num % i == 0) {sum += i;sum += num / i;}}// 此处单独处理的原因在于只需要加1次i值,如果在循环中会加2次if(i * i == num) {sum += i;}return sum == num;}
