We define the Perfect Number is a positive integer that is equal to the sum of all its positive divisors except itself.
Now, given an integer n, write a function that returns true when it is a perfect number and false when it is not.
Example:
Input: 28
Output: True
Explanation: 28 = 1 + 2 + 4 + 7 + 14
Note: The input number n will not exceed 100,000,000. (1e8)
题意很简单,直接计算即可
代码如下:
#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <string>
#include <climits>
#include <algorithm>
#include <sstream>
#include <functional>
#include <bitset>
#include <cmath>
using namespace std;
class Solution
{
public:
bool checkPerfectNumber(int num)
{
if (num == 1)
return false;
int sum = 1;
for (int i= 2; i <= (int)sqrt(num); i++)
{
if (num%i == 0)
{
sum += i;
if (i != num / i)
sum += num / i;
}
}
return sum == num;
}
};