How to find the first integer equal to the sum of its digits raised to some power in Scala

1 Answer

0 votes
object DigitPower {

  // compute sum of digits
  def digitSum(n0: Long): Long = {
    var n = n0
    var s: Long = 0

    while (n > 0) {
      s += n % 10
      n /= 10
    }

    s
  }

  def main(args: Array[String]): Unit = {
    var n: Long = 2

    while (true) {
      val s = digitSum(n)

      // Try powers k = 2..10 (enough for reasonable ranges)
      var p: Long = s * s
      for (k <- 2 to 10) {
        if (p == n) {
          println(s"Found: $n = ($s)^$k")
          sys.exit(0)
        }
        p *= s // next power
      }

      n += 1
    }
  }
}


/*
run:

Found: 81 = (9)^2

*/

 



answered 1 day ago by avibootz

Related questions

...