How to find all the numbers that are equal to the sum of the factorials of their digits in JavaScript

1 Answer

0 votes
// Example: 145 = 1! + 4! + 5! = 1 + 24 + 120 = 145

// Function to compute the factorial of a number
function factorial(n) {
  let fact = 1;
  
  for (let i = 2; i <= n; i++) {
    fact *= i;
  }
  
  return fact;
}

// Function to find all numbers equal to the sum of the factorials of their digits
function findDigitFactorialNumbers() {
  // Precompute factorials of digits 0-9
  const factorials = Array.from({ length: 10 }, (_, i) => factorial(i));

  // Define an upper limit (7 * 9! is a safe limit for this problem)
  const upperLimit = 7 * factorials[9];

  // Iterate through all numbers and check the condition
  for (let num = 10; num <= upperLimit; num++) {
    let sum = 0;
    let temp = num;

    // Calculate the sum of factorials of digits
    while (temp > 0) {
      const digit = temp % 10;
      sum += factorials[digit];
      temp = Math.floor(temp / 10);
    }

    // Check if the number equals the sum of the factorials of its digits
    if (sum === num) {
      console.log(`${num} is a digit factorial number.`);
    }
  }
}

findDigitFactorialNumbers();



/*
run:

145 is a digit factorial number.
40585 is a digit factorial number.

*/

 



answered Nov 9, 2025 by avibootz
...