Skip to content

Commit 800308f

Browse files
add CheckKishnamurthyNumber
1 parent 7fb345b commit 800308f

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

Maths/CheckKishnamurthyNumber.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
Problem statement and Explanation : https://www.geeksforgeeks.org/check-if-a-number-is-a-krishnamurthy-number-or-not-2/
3+
4+
krishnamurthy number is a number the sum of the all fectorial of the all dights is equal to the number itself.
5+
145 => 1! + 4! + 5! = 1 + 24 + 120 = 145
6+
*/
7+
8+
// factorail utility method.
9+
const factorial = (n) => {
10+
let fact = 1
11+
while (n !== 0) {
12+
fact = fact * n
13+
n--
14+
}
15+
return fact
16+
}
17+
18+
/**
19+
* krishnamurthy number is a number the sum of the factorial of the all dights is equal to the number itself.
20+
* @param {Number} number a number for checking is krishnamurthy number or not.
21+
* @returns return correspond boolean vlaue, if the number is krishnamurthy number return `true` else return `false`.
22+
* @example 145 => 1! + 4! + 5! = 1 + 24 + 120 = 145
23+
*/
24+
const CheckKishnamurthyNumber = (number) => {
25+
// firstly, check that input is a number or not.
26+
if (typeof number !== 'number') {
27+
return new TypeError('Argument is not a number.')
28+
}
29+
// create a variable to store the sum of all digits factorial.
30+
let sumOfAllDigitFactorial = 0
31+
// convert the number to string for convenience.
32+
String(number).split('').map(digit => {
33+
// split one by one digit and calculate factorial and store to the variable.
34+
return (sumOfAllDigitFactorial += factorial(Number(digit)))
35+
})
36+
// if the sumOftheFactorial is equal to the given number it means the number is a Krishnamurthy number.
37+
return sumOfAllDigitFactorial === number
38+
}
39+
40+
module.exports = CheckKishnamurthyNumber

0 commit comments

Comments
 (0)