|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Stanislav Shwartsman 2:400/520 01 Dec 2001 17:53:06 To : Victor Petrov Subject : кв. корень -------------------------------------------------------------------------------- 01 Dec 01 16:27, you wrote to Sergey Voloshchuk: SV>> К чему такие сложности? Квадратный корень легко находится по SV>> итерационной формуле sqrt(x) = 1/2 * (a + x/a) где а - начальное SV>> значение корня, можно принять а = х/2. Сходится очень быстро, SV>> причем каждый шаг дает примерно в 2 раза больше десятичных знаков VP> Если у тебя в компьютере есть встроенная арифметика бесконечной VP> точности, то, пожалуй, ты прав. ;) По собственному опыту могу сказать, VP> что деление длинных чисел - одна из самых "противных" операций (как по VP> скорости выполнения, так и по сложности программирования). Приведенный VP> мной алгоритм хорош тем, что использует, по сути, только вычитание и VP> деление на 2. Скорость его работы - O (n ^ 2), где n - число цифр в VP> числе. VP> С тебя - программа, вычисляющая сабж твоим методом. Для чистоты VP> эксперимента - на Паскале или Си без использования библиотек (кроме VP> ввода / вывода). Вот и сравним по сложности программы и скорости VP> выполнения. ;) Hе забудь: во входном числе может быть 10000 цифр. Если VP> не нравится - можешь считать, что исходное число маленькое, но VP> квадратный корень должен быть вычислен с точностью до 10000 знаков VP> после запятой (легко понять, что эти задачи эквивалентны). Обрати внимание, что деление на a можно заменить умножением на 1/a и скорость резко возрастет ;) E-mail: gate@fidonet.org.il Voice Phones: 972-4-8330554 (home), 972-5-4481073 (cell) Bye ! Stanislav (AKA Night's Man) [Team Technion] --- * Origin: Gate From Another World ... From Haifa, Israel (2:400/520) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/17853c090b6c.html, оценка из 5, голосов 10
|