[LeetCode] 507. 完美数

106 阅读1分钟

507. 完美数

解题思路

首先我们来明确下 因子的定义: 如果整数A除以B, 且没有余数, 则B是A的因子 比如: 8=1*8 8=2*4 即8的因子为 1, 2, 4, 8

回到题目本身, 因为因子n和 num/n 是成对出现的. 且 nn<=num 所以我们可以将n从 1-->n (nn<=num)

代码

var checkPerfectNumber = function (num) {
  if (num === 1) return false
  let sum = 1
  let d = 2
  for (; d * d < num; d++) {
    if (num % d === 0) sum += d + num / d
  }
  if (d * d === num) sum += d
  return sum === num
}