Perfect Number问题及解法

xiaoxiao2021-02-28  71

问题描述:

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; } };

转载请注明原文地址: https://www.6miu.com/read-46838.html

最新回复(0)