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.
示例:
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;
}
};
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;
}
};
相关文章推荐
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- Ugly Number问题及解法
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- Guess Number Higher or Lower II问题及解法
- Ugly Number II问题及解法
- Valid Perfect Square问题及解法
- Single Number II问题及解法
- Number of Boomerangs问题及解法
- Find the Duplicate Number问题及解法
- Excel Sheet Column Number问题及解法
- Convert a Number to Hexadecimal问题及解法
- Single Number III问题及解法
- Binary Number with Alternating Bits问题及解法
- Third Maximum Number问题及解法
- Minimum Number of Arrows to Burst Balloons问题及解法
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- Guess Number Higher or Lower问题及解法
- Valid Triangle Number问题及解法
- Complex Number Multiplication问题及解法
- 0/1背包问题解法