def find_root_power(n, minpower, maxpower):
for pwr in range(minpower, maxpower + 1):
# find root such that root**pwr == n
f = n ** (1. / pwr) # float
root = int(f + 0.5) # int
if root**pwr == n:
yield root, pwr
n = int(input("Input a number:"))
print()
for root, pwr in find_root_power(n, minpower=1, maxpower=5):
print("root: %d pwr: %d" % (root, pwr))
# Note: root=n, pwr=1 is always a solution if n is an integer
ZGVmIGZpbmRfcm9vdF9wb3dlcihuLCBtaW5wb3dlciwgbWF4cG93ZXIpOgogICAgZm9yIHB3ciBpbiByYW5nZShtaW5wb3dlciwgbWF4cG93ZXIgKyAxKToKICAgICAgICAjIGZpbmQgcm9vdCBzdWNoIHRoYXQgcm9vdCoqcHdyID09IG4KICAgICAgICBmID0gbiAqKiAoMS4gLyBwd3IpICAjIGZsb2F0CiAgICAgICAgcm9vdCA9IGludChmICsgMC41KSAgIyBpbnQKICAgICAgICBpZiByb290Kipwd3IgPT0gbjoKICAgICAgICAgICB5aWVsZCByb290LCBwd3IKCm4gPSBpbnQoaW5wdXQoIklucHV0IGEgbnVtYmVyOiIpKQpwcmludCgpCmZvciByb290LCBwd3IgaW4gZmluZF9yb290X3Bvd2VyKG4sIG1pbnBvd2VyPTEsIG1heHBvd2VyPTUpOgogICAgcHJpbnQoInJvb3Q6ICVkIHB3cjogJWQiICUgKHJvb3QsIHB3cikpCiMgTm90ZTogcm9vdD1uLCBwd3I9MSBpcyBhbHdheXMgYSBzb2x1dGlvbiBpZiBuIGlzIGFuIGludGVnZXI=