Even though Python natively supports big integers, taking the nth root of very large numbers can fail in Python.
x = 2 ** 100 cube = x ** 3 root = cube ** (1.0 / 3)
OverflowError: long int too large to convert to float
When dealing with such large integers, you will need to use a custom function to compute the nth root of a number.
def nth_root(x, n): # Start with some reasonable bounds around the nth root. upper_bound = 1 while upper_bound ** n <= x: upper_bound *= 2 lower_bound = upper_bound // 2 # Keep searching for a better result as long as the bounds make sense. while lower_bound < upper_bound: mid = (lower_bound + upper_bound) // 2 mid_nth = mid ** n if lower_bound < mid and mid_nth < x: lower_bound = mid elif upper_bound > mid and mid_nth > x: upper_bound = mid else: # Found perfect nth root. return mid return mid + 1 x = 2 ** 100 cube = x ** 3 root = nth_root(cube, 3) x == root # True