11-27 完美数

在这里插入图片描述
题解:
能够被num整除的所有元素的和,因为所有的数字只要大于自己的一半再加就会比这个数字大,所以直接过掉一半计算,时间复杂度O(N/2)。有人给出了O(1)的算法,但我没有理解到。

class Solution {
    
    
public:
    bool checkPerfectNumber(int num) {
    
    
        int sum = 0, num1 = int(num/2);
        for(int i=1; i<=num1; i++)
        {
    
    
            if(num % i == 0)
            {
    
    
                sum += i;
            }    
        }
        if(sum == num)
            return true;
        else
            return false;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_45885232/article/details/110249367
今日推荐