您的位置:首页 > Web前端

Perfect Number问题及解法

2017-05-06 10:17 218 查看
问题描述:

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.
示例:

Input: 28
Output: True
Explanation: 28 = 1 + 2 + 4 + 7 + 14

Note: The input number n will not exceed 100,000,000. (1e8)

问题分析:

我们考虑用循环遍历的方法求解,尽量减少循环次数,过程详见代码:

class Solution {
public:
bool checkPerfectNumber(int num) {
int low = sqrt(num);
int high;
int res = 0;
while(low > 0)
{
high = num / low;
if(low * high == num)
{
res = (high == num) ? res + low : res + low + high;
}
low--;
}
return res == num && num != 1 && num != 0;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: