# compute sum of digits
def digitSum(n):
s = 0
while n > 0:
s += n % 10
n //= 10
return s
def main():
n = 2
while True:
s = digitSum(n)
# Try powers k = 2..10 (enough for reasonable ranges)
p = s * s
for k in range(2, 11):
if p == n:
print(f"Found: {n} = ({s})^{k}")
return
p *= s # next power
n += 1
main()
"""
run:
Found: 81 = (9)^2
"""