[LeetCode]507. Perfect Number
题目描述
思路
实质上是求因数的过程
优化考虑点,对于奇数,不可能是完美数字
代码
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
bool checkPerfectNumber(int num) {
if (num < 6)
return false;
int res = 1;
for (int i = 2; i <= (int)sqrt(num); ++i) {
if (num % i == 0) {
res += i;
if (i != num / i)
res += num / i;
}
}
return res == num;
}
};
int main() {
Solution s;
cout << s.checkPerfectNumber(7) << endl;
system("pause");
return 0;
}