Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Извлечение квадратного корня 
:(
    Опции темы
FoxyMia
  Дата 31.8.2007, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 31.8.2007
Где: Минск

Репутация: нет
Всего: нет



Добрый день!
Мне необходимо реализовать извлечение квадратного корня из 5 с точностью 10 млн знаков.
Посоветуйте , пожалуйста, как это сделать. Если раньше попадались такие фишки-кинть , пожалуйста, линки и т.д.
К тому же здесь идет работа с большимми числами, ия  не совсем понимаю как ее реализовать.
Заранее благодарна.
PM MAIL   Вверх
bsa
Дата 31.8.2007, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Метод реализации алгоритма работы с "большими" числами прост, как 2х2. Представляешь число в виде массива на 10 млн. элементов типа char, каждый из которых принимает значения от 0 до 9. Плюс к этому массиву экспонента (степень десятки) типа int и знак типа bool, например. Хотя, в случае корней знак необязателен. После этого работаешь с этими числами так, как на бумажке (т.е. сложение/вычитание, умножение/деление в столбик).

Это сообщение отредактировал(а) bsa - 31.8.2007, 20:04
PM   Вверх
shara
Дата 31.8.2007, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



да, тут без текстовых переменных не обойтись. я делал деление двух чисел, только правда на QBasic, но алгоритм работы поидее тотже. если хочешь могу кинуть исходник.


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
jonie
Дата 31.8.2007, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



есть целые библиотеки для работы с длинной арифметикой... например известрейшая gmp...
также есть GInt, openSSL....
--------
по поводу математики : 
Код

\[
\left( {1 + x} \right)^{s/t}  = \sum\limits_{n = 0}^\infty  {\frac{{\prod\limits_{k = 0}^n {\left( {s + t - kt} \right)} }}{{\left( {s + t} \right)n!t^n }}x^n } 
\]

\[
|x|<1
\]


*TeX-а не нашел в кодах )
--------------------
не посмотрел что надо квадратный корень) с ним проще, его можно разложить в ряд тейлора...
sqrt(x) = exp ^ {1/2ln(x)}
а дальше тейлор .... например....

ЗЫ: по вышке были какие-то книги электронка, если надо - чиркните в приват куда-нить брошу....
аналогично по библиотекам

Это сообщение отредактировал(а) jonie - 31.8.2007, 20:54


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
FoxyMia
Дата 31.8.2007, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 31.8.2007
Где: Минск

Репутация: нет
Всего: нет



Большое спасибо за ответы.
ща чего-нить попробую сделать
PM MAIL   Вверх
W4FhLF
Дата 3.9.2007, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



Пардон, чисто из любопытства. Зачем сие надо?


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
bsa
Дата 3.9.2007, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(W4FhLF @ 3.9.2007,  10:19)
Пардон, чисто из любопытства. Зачем сие надо?

такие задания любят давать на олипиадах
PM   Вверх
BaD_SeCt0R
Дата 4.9.2007, 02:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: нет
Всего: 18



Цитата(bsa @  31.8.2007,  19:57 Найти цитируемый пост)
10 млн. элементов типа char, каждый из которых принимает значения от 0 до 9


Помилуйте, как так можно раскидываться памятью? А если знаков 10 миллиардов, триллионов? К тому же из символов составлять слова - далеко не самый быстрый способ


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
bsa
Дата 4.9.2007, 06:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



BaD_SeCt0R, знаешь, если представить число в оперативке в двоичном виде, то как потом его выводить на экран? Имхо, вывести на экран его будет на порядок сложней.
PM   Вверх
jonie
Дата 4.9.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



10 мегабайт мелочи. Даже 100-400 МБ приемлемо имхо.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
-Kp0T-
Дата 4.9.2007, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 23.2.2007

Репутация: нет
Всего: 2



Что то я не вижу что тебе надо хранить эти числа, может ну её сразу в STDOUT smile ?

Сhar говорите? Верно, но {0-9} прекрасно укладывается в 4-х битный диапазон, то есть получается что ты можешь в байте хранить 2 символа smile Двоичной ариметикой заморачиваться не стоит, можно к примеру для двух соседних чисел хранить их образуемый ASCII - эквавилент. Поясню на примере:
Пусть есть множество 196784 (для краткости, что то оно умещается в 18 бит сейчас несущественно). Расточительно 6 байт расходовать на это число. Можно представить его в 3х байтах: char[3]={19,67,84}.

P.S. Можно ещё дампить в файл, к примеру когда не удается выделить требуемую величину памяти, хотя ещё же есть PAGEFILE smile
В свое время, я проект по терверу писал, там последовательность чисел доходила до 600 Мб в файле...
PM MAIL   Вверх
DjoNIK
Дата 4.9.2007, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



Цитата

10 мегабайт мелочи. Даже 100-400 МБ приемлемо имхо

Оно-то конечно можно, но на настольный PC(!). Этоуже работа для суперкомпьютеров, где 400 Мб только под один элемент (число).
Да и выводит это число даже на ватмане не факт, что получится smile
Все вшесказанное IMHO.


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
bsa
Дата 4.9.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Скорее всего это число будет слито, а затем путем тупого сравнения с эталоном будет выяснено, правильно ли посчитано оно или нет.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.