完美数

完美数

CategoryDifficultyLikesDislikes
algorithmsEasy (37.67%)51-

Tags

math

Companies

Unknown

对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。

给定一个 整数n, 如果他是完美数,返回 True,否则返回 False

示例:

1
2
3
输入: 28
输出: True
解释: 28 = 1 + 2 + 4 + 7 + 14

提示:

输入的数字 n 不会超过 100,000,000. (1e8)


Discussion | Solution

代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution:
    def checkPerfectNumber(self, num: int) -> bool:
        if num <= 4:
            return False
        sons = self.getNumberSons(num)
        return num == sum(sons)

    def getNumberSons(self, num: int) -> []:
        if num == 1:
            return [1]
        if num <= 3:
            return [1, num]
        i, j = 2, num
        res = [1]
        while i < j:
            if num % i == 0:
                res.append(i)
                res.append(num/i)
            i += 1
            j = num / i

        return res
updatedupdated2024-08-252024-08-25