Вычисление больших целых корней Python. Несмотря на то, что Python изначально поддерживает большие целые числа, извлечение n-го корня из очень больших чисел может привести к ошибке. При работе с такими большими целыми числами вам нужно будет использовать пользовательскую функцию для вычисления n-го корня числа. 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 Вычисление больших целых корней x = 2 ** 100 cube = x ** 3 root = cube ** (1.0 / 3) OverflowError: long int too large для преобразования в float
Целочисленное деление Как вы знаете, в Python есть два способа делить целые числа: Оператор / при делении целого числа на целое возвращает результат типа float. >>> 3 / 2 1.5 # float А оператор // при делении целого на целое возвращает целое с округлением вниз, по-английски этот оператор еще называют floor division. >>> 3 // 2 1 # int Копалась в истории языка и узнала, что изначально деление целых чисел в Python было только целочисленное, и для него Гвидо использовал символ /. Но быстро...