Files
JavaScript/Maths/PerfectNumber.js
Ephraim Atta-Duncan cd6ec65e54 Add Algorithms to Math with tests (#429)
* chore: add area and area test

* chore: add armstrong number

* chore: add factors

* chore: add perfect cube

* chore: add perfect square

* chore: add perfect number

* chore: add number of digits

* chore: fix according to standardjs

* chore: remove conflicting files
2020-10-12 01:09:20 +05:30

31 lines
813 B
JavaScript

/**
* Author: dephraiim
* License: GPL-3.0 or later
*
* == Perfect Number ==
* In number theory, a perfect number is a positive integer that is equal to the sum of
* its positive divisors(factors), excluding the number itself.
* For example: 6 ==> divisors[1, 2, 3, 6]
* Excluding 6, the sum(divisors) is 1 + 2 + 3 = 6
* So, 6 is a Perfect Number
* Other examples of Perfect Numbers: 28, 486, ...
*
* More on Perfect Number:
* https://en.wikipedia.org/wiki/Perfect_number
*
*/
const factorsExcludingNumber = (n) => {
return [...Array(n).keys()].filter((num) => n % num === 0)
}
const perfectNumber = (n) => {
const factorSum = factorsExcludingNumber(n).reduce((num, initialValue) => {
return num + initialValue
}, 0)
return factorSum === n
}
export { perfectNumber }