package main
import (
"fmt"
)
// compute sum of digits
func digitSum(n int64) int64 {
var s int64 = 0
for n > 0 {
s += n % 10
n /= 10
}
return s
}
func main() {
for n := int64(2); ; n++ {
s := digitSum(n)
// Try powers k = 2..10 (enough for reasonable ranges)
p := s * s
for k := 2; k <= 10; k++ {
if p == n {
fmt.Printf("Found: %d = (%d)^%d\n", n, s, k)
return
}
p *= s // next power
}
}
}
/*
run:
Found: 81 = (9)^2
*/