Вы можете использовать метод Ньютона, чтобы найти 1 / а.
Пусть f (x) = 1 / x - a, вы хотите найти f ^ {- 1} (0).
Тогда
x_{n + 1} = x_n - f(x_n) / f'(x_n)
сходится к f ^ {- 1} (0). Это дает нам
x_{n + 1} = x_n - (1 / x_n - a) / (-1 / x^2)
1011 * поэтому *
x_{n + 1} = x_n * (2 - a * x_n)
сходится к 1 / а. Вы проверяете сходимость по критерию
if (|x_{n + 1} - x_n| < tolerance) then stop
Вам примерно нужно умножить лог n на сходимость. Если умножения O (n ^ 2), это медленнее, чем длинное деление для больших чисел (O (n ^ 2), против O (n ^ 2 log n)). Тем не менее, это быстро реализовать и не так плохо на практике. Фактически, некоторые процессоры используют вариант этой схемы, чтобы найти инверсии и выполнить деления. Обратите внимание, что если у вас есть лучший алгоритм умножения, то метод Ньютона асимптотически превосходит длинное деление.
В качестве первого предположения для x_0, вы можете установить все, кроме самой значащей цифры, в ноль и найти ее обратную сторону.
Пример: а = 3425,23. Первое предположение: 1 / a ~ 1/3000 ~ 0.0033333333
В качестве итерации, итерация
x_{n + 1} = x_n * (3 - a * x_n^2)
будет сходиться к 1 / sqrt (a) (для начального предположения взять две первые цифры и небольшую таблицу поиска).