// compute sum of digits
fn digit_sum(mut n: i64) -> i64 {
let mut s: i64 = 0;
while n > 0 {
s += n % 10;
n /= 10;
}
s
}
fn main() {
let mut n: i64 = 2;
loop {
let s = digit_sum(n);
// Try powers k = 2..10 (enough for reasonable ranges)
let mut p: i64 = s * s;
for k in 2..=10 {
if p == n {
println!("Found: {} = ({})^{}", n, s, k);
return;
}
p *= s; // next power
}
n += 1;
}
}
/*
run:
Found: 81 = (9)^2
*/