// Example: 145 = 1! + 4! + 5! = 1 + 24 + 120 = 145
// Function to compute the factorial of a number
fun factorial(n: Int): Int {
var fact = 1
for (i in 2..n) {
fact *= i
}
return fact
}
// Function to find all numbers equal to the sum of the factorials of their digits
fun findDigitFactorialNumbers() {
// Precompute factorials of digits 0–9
val factorials = IntArray(10) { factorial(it) }
// Define an upper limit (7 * 9! is a safe limit for this problem)
val upperLimit = 7 * factorials[9]
// Iterate through all numbers and check the condition
for (num in 10..upperLimit) {
var sum = 0
var temp = num
// Calculate the sum of factorials of digits
while (temp > 0) {
val digit = temp % 10
sum += factorials[digit]
temp /= 10
}
// Check if the number equals the sum of the factorials of its digits
if (sum == num) {
println("$num is a digit factorial number.")
}
}
}
fun main() {
findDigitFactorialNumbers()
}
/*
run:
145 is a digit factorial number.
40585 is a digit factorial number.
*/