完美数:
题目描述:
对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。
给定一个 整数 n, 如果他是完美数,返回 True,否则返回 False
示例1:
输入: 28 (完全数)
输出: True
解释: 28 = 1 + 2 + 4 + 7 + 14
题解
- 完美数定义:维基百科:
https://zh.wikipedia.org/wiki/%E5%AE%8C%E5%85%A8%E6%95%B0 - 目前尚未发现奇完全数,所以奇数不是完全数
- 完全数一定是偶数,通过for循环来计算偶数是否为完全数;
- 代码实现如下:
class Solution {
public boolean checkPerfectNumber(int num) {
if(num % 2 != 0) return false;//奇数一定不是完全数
int temp = 1;
// 避免出现重复值
for(int i = 2; i < num / i; i++){
if(num % i == 0){
temp += i + num / i;
}
}
return temp == num;
}
}