题解:
能够被num整除的所有元素的和,因为所有的数字只要大于自己的一半再加就会比这个数字大,所以直接过掉一半计算,时间复杂度O(N/2)。有人给出了O(1)的算法,但我没有理解到。
class Solution {
public:
bool checkPerfectNumber(int num) {
int sum = 0, num1 = int(num/2);
for(int i=1; i<=num1; i++)
{
if(num % i == 0)
{
sum += i;
}
}
if(sum == num)
return true;
else
return false;
}
};