![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| FoxyMia |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 31.8.2007 Где: Минск Репутация: нет Всего: нет |
Добрый день!
Мне необходимо реализовать извлечение квадратного корня из 5 с точностью 10 млн знаков. Посоветуйте , пожалуйста, как это сделать. Если раньше попадались такие фишки-кинть , пожалуйста, линки и т.д. К тому же здесь идет работа с большимми числами, ия не совсем понимаю как ее реализовать. Заранее благодарна. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Метод реализации алгоритма работы с "большими" числами прост, как 2х2. Представляешь число в виде массива на 10 млн. элементов типа char, каждый из которых принимает значения от 0 до 9. Плюс к этому массиву экспонента (степень десятки) типа int и знак типа bool, например. Хотя, в случае корней знак необязателен. После этого работаешь с этими числами так, как на бумажке (т.е. сложение/вычитание, умножение/деление в столбик).
Это сообщение отредактировал(а) bsa - 31.8.2007, 20:04 |
|||
|
||||
| shara |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 29.6.2004 Где: печенье? Репутация: нет Всего: 2 |
да, тут без текстовых переменных не обойтись. я делал деление двух чисел, только правда на QBasic, но алгоритм работы поидее тотже. если хочешь могу кинуть исходник.
-------------------- с точки зрения аэродинамики шмель не может летать |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
есть целые библиотеки для работы с длинной арифметикой... например известрейшая gmp...
также есть GInt, openSSL.... -------- по поводу математики :
*TeX-а не нашел в кодах ) -------------------- не посмотрел что надо квадратный корень) с ним проще, его можно разложить в ряд тейлора... sqrt(x) = exp ^ {1/2ln(x)} а дальше тейлор .... например.... ЗЫ: по вышке были какие-то книги электронка, если надо - чиркните в приват куда-нить брошу.... аналогично по библиотекам Это сообщение отредактировал(а) jonie - 31.8.2007, 20:54 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| FoxyMia |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 31.8.2007 Где: Минск Репутация: нет Всего: нет |
Большое спасибо за ответы.
ща чего-нить попробую сделать |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Пардон, чисто из любопытства. Зачем сие надо?
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
такие задания любят давать на олипиадах |
|||
|
||||
| BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: нет Всего: 18 |
Помилуйте, как так можно раскидываться памятью? А если знаков 10 миллиардов, триллионов? К тому же из символов составлять слова - далеко не самый быстрый способ -------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
BaD_SeCt0R, знаешь, если представить число в оперативке в двоичном виде, то как потом его выводить на экран? Имхо, вывести на экран его будет на порядок сложней.
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
10 мегабайт мелочи. Даже 100-400 МБ приемлемо имхо.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| -Kp0T- |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 23.2.2007 Репутация: нет Всего: 2 |
Что то я не вижу что тебе надо хранить эти числа, может ну её сразу в STDOUT
Сhar говорите? Верно, но {0-9} прекрасно укладывается в 4-х битный диапазон, то есть получается что ты можешь в байте хранить 2 символа Пусть есть множество 196784 (для краткости, что то оно умещается в 18 бит сейчас несущественно). Расточительно 6 байт расходовать на это число. Можно представить его в 3х байтах: char[3]={19,67,84}. P.S. Можно ещё дампить в файл, к примеру когда не удается выделить требуемую величину памяти, хотя ещё же есть PAGEFILE В свое время, я проект по терверу писал, там последовательность чисел доходила до 600 Мб в файле... |
|||
|
||||
| DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
Оно-то конечно можно, но на настольный PC(!). Этоуже работа для суперкомпьютеров, где 400 Мб только под один элемент (число). Да и выводит это число даже на ватмане не факт, что получится Все вшесказанное IMHO. -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Скорее всего это число будет слито, а затем путем тупого сравнения с эталоном будет выяснено, правильно ли посчитано оно или нет.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |