// Strong numbers are the numbers that the sum of factorial of its digits
// is equal to the original number
// 145 is a strong number: 1 + 24 + 120 = 145
import scala.annotation.tailrec
object StrongNumbers {
def factorial(n: Int): Int = {
@tailrec
def factHelper(i: Int, acc: Int): Int = {
if (i <= 1) acc
else factHelper(i - 1, acc * i)
}
factHelper(n, 1)
}
def main(args: Array[String]): Unit = {
for (n <- 1 to 1_000_000) {
var tmp = n
var sum = 0
while (tmp != 0) {
val reminder = tmp % 10
sum += factorial(reminder)
tmp /= 10
}
if (sum == n) {
println(n)
}
}
}
}
/*
run:
1
2
145
40585
*/