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