How to find all the strong numbers in given range with Scala

1 Answer

0 votes
// 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
       
*/

 



answered Sep 10, 2024 by avibootz

Related questions

1 answer 113 views
1 answer 186 views
1 answer 112 views
1 answer 2,186 views
1 answer 222 views
...