文章目录
507. 完美数 javascript
题目:
对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。
给定一个 整数 n, 如果是完美数,返回 true,否则返回 false
示例
输入:28
输出:True
解释:28 = 1 + 2 + 4 + 7 + 14
1, 2, 4, 7, 和 14 是 28 的所有正因子。
输入:num = 6
输出:true
输入:num = 496
输出:true
输入:num = 8128
输出:true
输入:num = 2
输出:false
代码1
- 先得到num的所有正因子,然后相加判断
var checkPerfectNumber = function(num) {
// 先得到num的所有正因子,然后相加判断
// 1 找到所有正因子 并去除 数组中它本身
let arr = []
for(let i=1;i<=num/2;i++){
if(num % i==0 && i!==num)arr.push(i)
}
let sum = eval(arr.join("+"))
if(sum === num)return true
return false
};
后来想了想,可以不用直接统计数量,于是就有了代码2
代码2
var checkPerfectNumber = function(num) {
// 先得到num的所有正因子,然后相加判断
// 找到所有正因子 并去除 数组中它本身
let sum = 0
for(let i=1;i<=num/2;i++){
if(num % i==0 && i!==num)sum +=i
}
if(sum === num)return true
return false
};
也就提高了一点点
后来去看题解,发现完美数就只有那么几个,于是有了下面的代码3
代码3
var checkPerfectNumber = function(num) {
if(num === 6 || num === 28 || num===496|| num===8128|| num===33550336)return true
return false
};
学艺不精,还需努力💪
高考加油