题目描述:
对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。
给定一个 正整数 n, 如果他是完美数,返回 True,否则返回 False
示例:
输入: 28
输出: True
解释: 28 = 1 + 2 + 4 + 7 + 14
解题思路:
从1到num的平方根,用num依次对每一个数取余,余数为0说明可以整除,也就是该数字为num的因子
将该数字与其对应的另一个因子加到所有因子之和上。
判断最后的所有因子之和是否是num的二倍(1对应的另一个因子是num)
class Solution(object):
def checkPerfectNumber(self, num):
"""
:type num: int
:rtype: bool
"""
if num<=1:return False
count=0
i=1
while i<int(math.sqrt(num)+1):
if num%i==0:#是约数
count+=i+num//i
i+=1
return count==2*num