import java.util.ArrayList;
public class DigitPower {
// compute sum of digits
static long digitSum(long n) {
long s = 0;
while (n > 0) {
s += n % 10;
n /= 10;
}
return s;
}
public static void main(String[] args) {
ArrayList<Long> results = new ArrayList<>();
for (long n = 2; results.size() < 3; n++) {
long s = digitSum(n);
// Try powers k = 2..10 (enough for reasonable ranges)
long p = s * s;
for (int k = 2; k <= 10; k++) {
if (p == n) {
System.out.println("Found: " + n +
" = (" + s + ")^" + k);
results.add(n);
break; // stop checking powers for this n
}
p *= s; // next power
}
}
System.out.println("\nFirst 3 numbers:");
for (long x : results) {
System.out.println(x);
}
}
}
/*
run:
Found: 81 = (9)^2
Found: 512 = (8)^3
Found: 2401 = (7)^4
First 3 numbers:
81
512
2401
*/