这道题一开始又又又又超时了,我迭代到num/2,这样是超时的。
然后看了题解,发现确实,有一个小的就会存在一个大的,这样只要解决n**2=num的特殊情况,就可以只迭代到sqrt(num)了
class Solution:
def checkPerfectNumber(self, num: int) -> bool:
if num<=1:
return False
temp=1
min_num=2
while min_num**2<=num:
if num%min_num==0:
max_num=int(num/min_num)
temp+=min_num
temp+=max_num
if min_num==max_num:
temp-=max_num
min_num+=1
return temp==num



