|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Victor Petrov 2:5030/744.113 01 Dec 2001 17:27:31 To : Sergey Voloshchuk Subject : кв. корень --------------------------------------------------------------------------------
В письме от Sergey Voloshchuk к Victor Petrov от Пятница Hоябрь 30 2001 16:06
писалось:
SV> К чему такие сложности? Квадратный корень легко находится по итерационной
SV> формуле
SV> sqrt(x) = 1/2 * (a + x/a)
SV> где а - начальное значение корня, можно принять а = х/2. Сходится очень
SV> быстро, причем каждый шаг дает примерно в 2 раза больше десятичных знаков
Если у тебя в компьютере есть встроенная арифметика бесконечной точности, то,
пожалуй, ты прав. ;) По собственному опыту могу сказать, что деление длинных
чисел - одна из самых "противных" операций (как по скорости выполнения, так и по
сложности программирования). Приведенный мной алгоритм хорош тем, что
использует, по сути, только вычитание и деление на 2. Скорость его работы -
O (n ^ 2), где n - число цифр в числе.
С тебя - программа, вычисляющая сабж твоим методом. Для чистоты эксперимента -
на Паскале или Си без использования библиотек (кроме ввода / вывода). Вот и
сравним по сложности программы и скорости выполнения. ;) Hе забудь: во входном
числе может быть 10000 цифр. Если не нравится - можешь считать, что исходное
число маленькое, но квадратный корень должен быть вычислен с точностью до 10000
знаков после запятой (легко понять, что эти задачи эквивалентны).
Victor
--- EOS v0.70
* Origin: Свобода - это познанная необходимость. (2:5030/744.113)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/184233c0904fc.html, оценка из 5, голосов 10
|