Удивительно, что профи-математики ТУТ так и не смогли внятно описать искомый алгоритм. Придется сделать мне - биологу.
Сначала для разминки корень квадратный:
Алгоритм такой. Имеем некое число. Например, 31843449. Разбиваем его на двойки справа налево. Каждая двойка даст в ответе свою цифру.
31’84’34’49|| 5643
25
100 х 6 6 84
36 6 36
1120 х 4 48 34
16 44 96
11280х 3 3 38 49
9 3 38 49
Считать начинаем слева. Ближайший «снизу» к 31 квадрат (25)имеет число
, ибо квадрат
уже больше имеющихся 31. Разницу
сносим и прибавляем к ней следующую пару цифр(84), получили число 684. Подбор каждого следующего числа Х в квадратном корне производится по формуле (20а х Х + Х^2), где а – это уже имеющееся число в ответе. Результат должен быть ближайшим «снизу» к числу 684. Имеем
Для
это будет
636. А для
соответственно (
Ясно, что 7 –это перебор, так как 749 больше 684. Выбираем
и повторяем весь цикл для следующего числа. Разницу
сносим и прибавляем к ней следующую пару 34. Получили число 4834. Теперь
, ищем следующую Х.
При
формула дала 4496. При
формула даст 5625 – «перебор»! выбираем
. Снова повторяем цикл. Разницу
сносим, добавляем пару 49 получаем число 33849. Теперь
применим формулу для
Всё! Получили ответ без остатка. Если остаток есть, то сносим его, добавляем к нему два нуля справа и вновь повторяем цикл столько раз, сколько значащих цифр нам надо.
Описание громоздко для понятности, сам же расчет идет довольно легко и быстро. Этот алгоритм есть и в Вики-педии. Там он описан не менее громоздко. А теперь ТО(!!), что ни в Вики, ни в Гугле с Яндексом не нашел.
Алгоритм вычисления кубического корня.
82’881’856| 436
64
18 881
27 15 507
3 374 856
216 3 374 856
Теперь искомое число разбиваем справа налево на тройки, каждая из которых даст свою цифру в ответе. В последней левой «тройке» оказалось две цифры (82,) а могла быть и одна, и три. Ближайшее «снизу»
имеет куб 64, а у
куб 125 уже «перебор» для 82. Разницу
сносим и добавляем следующую тройку (881), получив число 18881. Следующее число Х в кубическом корне вычисляем по формуле, где логично уже не два компонента, а три:
(300а^2 хХ + 30а х Х^2 + Х^3), чтобы результат был ближайшим «снизу». У нас сейчас
. Для
имеем:
. Для
соответственно
что есть «перебор» для 18881, поэтому выбираем
. Далее цикл повторяем. Разницу
сносим, к ней добавляем следующую тройку 856, получив число 3374856. На этом этапе
Определяем Х. Для
Итого
. Готово! Если же есть остаток и нам надо следующую цифру в ответе, добавляем к остатку три нуля и снова повторяем цикл.
-- 22.01.2012, 13:10 --Ума не приложу как поправить автоматический разгром моего предыдущего сообщения тегом math : испортил всё , убрал все пробелы, часть символов и т.д. Тогда алгоритм повторю в ЖЖ
http://afp-zp.livejournal.com/338860.html-- 22.01.2012, 13:49 --А если так?