import Foundation
// Example: 145 = 1! + 4! + 5! = 1 + 24 + 120 = 145
// Function to compute the factorial of a number
func factorial(_ n: Int) -> Int {
var fact = 1
if n >= 2 {
for i in 2...n {
fact *= i
}
}
return fact
}
// Function to find all numbers equal to the sum of the factorials of their digits
func findDigitFactorialNumbers() {
// Precompute factorials of digits 0–9
let factorials = (0...9).map { factorial($0) }
// Define an upper limit (7 * 9! is a safe limit for this problem)
let 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 {
let digit = temp % 10
sum += factorials[digit]
temp /= 10
}
// Check if the number equals the sum of the factorials of its digits
if sum == num {
print("\(num) is a digit factorial number.")
}
}
}
findDigitFactorialNumbers()
/*
run:
145 is a digit factorial number.
40585 is a digit factorial number.
*/