507.完美数
对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。
给定一个 整数 n, 如果是完美数,返回 true,否则返回 false
要想办法约束遍历的范围,否则超出时间限制,例如:
class Solution:
def checkPerfectNumber(self, num: int) -> bool:
if num == 1:
return False
res = 0
for x in range(1,num+1):
if num % x == 0:
res += x
if res - num == num:
return True
else:
return False
解法①:枚举leetcode官方
class Solution: def checkPerfectNumber(self, num: int) -> bool: if num == 1: return False sum = 1 d = 2 while d*d <= num: if num % d == 0: sum += d if d*d < num: sum += num / d d += 1 return num == sum
复杂度:
- 时间复杂度:O(sqrt(num))。
- 空间复杂度:O(1)。