Python Leetcode(507.完美数)
对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。
给定一个 正整数 n, 如果他是完美数,返回 True,否则返回 False
示例:
输入: 28
输出: True
解释: 28 = 1 + 2 + 4 + 7 + 14
注意:
输入的数字 n 不会超过 100,000,000. (1e8)
Solution:(对这个数字进行遍历,如果i是它的一个因数,那么num/i也是它的一个因数,相当于把整个数字的长度缩短了一半来寻找,把它加在sum_val中,最终返回sum_val是否等于num)
class Solution(object):
def checkPerfectNumber(self, num):
"""
:type num: int
:rtype: bool
"""
import math
if num <= 1:
return False
sum_val = 1
for i in range(2, int(math.sqrt(num))+1):
if num % i == 0:
sum_val = sum_val + i + num/i
if i == num/i:
break
return sum_val == num
solution = Solution()
print(solution.checkPerfectNumber(28))
True