In this Leetcode Perfect Number problem solution A perfect number is a positive integer that is equal to the sum of its positive divisors, excluding the number itself. A divisor of an integer x is an integer that can divide x evenly.

Given an integer n, return true if n is a perfect number, otherwise return false.

Leetcode Perfect Number problem solution


Problem solution in Python.

class Solution(object):
    def checkPerfectNumber(self, num):
        """
        :type num: int
        :rtype: bool
        """
        if num <= 1:
            return False
        cum = cur = 1
        while cur < int(math.sqrt(num)):
            cur += 1
            if num % cur == 0:
                cum += cur + num / cur
        return num == cum

Problem solution in Java.

class Solution {
public boolean checkPerfectNumber(int num) {
    if(num==1)return false;
    int i=2;
    int k=0;
    while(i*i<=num){
        if(num%i==0){
            k+=(i+(num/i));
        }i++;
    }
    return k+1==num;
  }
}


Problem solution in C++.

class Solution {
public:
    bool checkPerfectNumber(long long int num) {
        if(num<=1)
            return false;
        long long int sum1=1;
        
        for(long long int i=2;i<=(int)(sqrt(num));i++){
            if(num%i==0){
                sum1+=i;
                if(i*i!=num){
                    sum1= sum1+ (num/i);
                }
            }
         
        }
        return (sum1==num)?true:false;
        
    }
};