题意:
思路:
n
u
m
<
=
1
e
8
num<=1e8
num<=1e8,所以用
s
q
r
t
(
n
u
m
)
sqrt(num)
sqrt(num)的复杂度枚举所有的因子进行判断即可。
对于任意的
n
u
m
m
o
d
i
=
0
num\mod i=0
nummodi=0,要加上
i
i
i;如果
i
!
=
n
u
m
/
i
i!=num/i
i!=num/i的话,那么就再加上
n
u
m
/
i
num/i
num/i.
注意要特判
1
1
1的情况。
代码:
class Solution {
public:
bool checkPerfectNumber(int num) {
if(num==1) return false;
int sum=1;
for(int i=2;i<=num/i;i++)
if(num%i==0){
sum=sum+i;
if(i!=num/i) sum=sum+num/i;
}
return sum==num;
}
};