Description
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.
Example 1:
Input: num = 28 Output: true Explanation: 28 = 1 + 2 + 4 + 7 + 14 1, 2, 4, 7, and 14 are all divisors of 28.
Example 2:
Input: num = 7 Output: false
Constraints:
1 <= num <= 108
Solutions
Solution 1: Enumeration
First, we check if num is 1. If it is, then num is not a perfect number, and we return false.
Next, we enumerate all positive divisors of num starting from 2. If num is divisible by a positive divisor i, we add i to the sum s. If the quotient of num divided by i is not equal to i, we also add the quotient to the sum s.
Finally, we check if s is equal to num.
The time complexity is O(√n), where n is the value of num. The space complexity is O(1).
PythonJavaC++GoTypeScript
class Solution: def checkPerfectNumber(self, num: int) -> bool: if num == 1: return False s, i = 1, 2 while i <= num // i: if num % i == 0: s += i if i != num // i: s += num // i i += 1 return s == num(code-box)
