Search This Blog

2024/04/01

Javascript Algorithm:Perfect Number

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

Solution:
let num = 8128;

var checkPerfectNumber = function (num) {
let sum = 1;
let max = Math.sqrt(num);
let isOdd = num % 2;

// divisors of 1 other than itself is none so its not perect number
if (num == 1) {
return false;
}

let i = 2;
while (i < max) {
if (num % i == 0) {
sum += i;
sum += num / i;
}

if (isOdd == 1) {
i += 2;
} else {
i++;
}
}
return sum === num;
};

let isPerfect = checkPerfectNumber(num);
console.log(`${num} is perfect number:${isPerfect}`);

Output:
8128 is perfect number:true

No comments:

Post a Comment