Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Деление болших чисел не пребегая к BigInteger? 
:(
    Опции темы
unkis
  Дата 25.11.2004, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ребята нужен алгоритм деления лубих больших не отрецателних целих чисел, которий возвращяет резултат и остаток.
При етом исползоват ммогно только елиментарние типи данних(БигИнтежер исползоват нелзя).

пример.
1000000000000000000000000000000000000000:20000000000000000000000000000000=........

Кто знает подскагите пожалуйста .

Зарания благодарен!
smile


--------------------
www.unkis.com
PM MAIL WWW   Вверх
AntonSaburov
Дата 25.11.2004, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Берем книгу Кнута, там находим алгоритм и пишем, пишем, пишем smile

В принципе тут без шуток - они напоминают умножение, деление, вычитание и сложение столбиком. В принципе реализовать не очень сложно.
PM MAIL WWW ICQ   Вверх
Domestic Cat
Дата 25.11.2004, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Деление двух целых неотрицательных чисел - это просто вычитание одного из другого до тех пор, пока второе не станет меньше чем первое:

Код

// a/b
int result = 0;
while (a > b)
{
     a -= b;
     result++;
}
остаток = a;
результат = result;


То есть, нужно знать, кak вычитать целыe числа произвольной длины и как их сравнивать.
Хранить эи чслa можнo в массивах :
Код

int[] a = {1, 0, 0, 0, 0, 0, 0, ......};


Тогдa сравниват' их очень простo :
Код

int lengthA = a.length;
int lengthB = b.length;
if (lengthA > lengthB) System.out.println( " A > B");
else if (lengthA < lengthB) System.out.println( " A < B");
else
for (int  i= 0; i < lengthB; i++)
{
    if (a[i] > b[i]) { System.out.println( " A > B"); break; }
    if (a[i] < b[i]) { System.out.println( " A < B"); break; };
}


- предполагается, что числа не начнаются с 0.

Вычитать тоже просто, вспомни кak это делается столбиком и делай то жe самое с массивамi.

Это сообщение отредактировал(а) Domestic Cat - 25.11.2004, 17:41


--------------------

PM   Вверх
unkis
Дата 25.11.2004, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Domestic Cat я тут прикинул и вот что получается если мне надо к примеру разделит числа
Код

а[]={4,2,5,4,5,7,8,4,6,7,6,8,4,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} на
b[]={9,8,7,6,5,4,3,2,1,9,8,7,6,3,2,5,4,6,5,4,5,8,7,9}

то по вашему методу из 4 я не могу вичесть 9 так как 4<9

?????

AntonSaburov у меня ест книги кнута, правда в електронном виде, и там нет оглавления, ви не подскагете в каком томе на какой странице я могу наити ети олгаритми, зарания благодарен.

Это сообщение отредактировал(а) unkis - 25.11.2004, 17:52


--------------------
www.unkis.com
PM MAIL WWW   Вверх
AntonSaburov
Дата 25.11.2004, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Скорее всего в первом, но я не помню точно. Давно смотрел. Книга мне давалась тяжело.
Если найду, то скажу.
PM MAIL WWW ICQ   Вверх
Domestic Cat
Дата 25.11.2004, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Цитата
то по вашему методу из 4 я не могу вичесть 9 так как 4<9


ну а столбиком как вычiтается?
Код

21
-13
-----
1(-2)
// прибавляем к отрицательному чисслу 10, вычитаем 1 из следующей за -2 единицей:
08


алгоритм тут несложный


--------------------

PM   Вверх
Sleepy_PIP
Дата 25.11.2004, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(unkis @ 25.11.2004, 17:47)
Domestic Cat я тут прикинул и вот что получается если мне надо к примеру разделит числа
Код

а[]={4,2,5,4,5,7,8,4,6,7,6,8,4,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} на
b[]={9,8,7,6,5,4,3,2,1,9,8,7,6,3,2,5,4,6,5,4,5,8,7,9}

то по вашему методу из 4 я не могу вичесть 9 так как 4<9

?????

AntonSaburov у меня ест книги кнута, правда в електронном виде, и там нет оглавления, ви не подскагете в каком томе на какой странице я могу наити ети олгаритми, зарания благодарен.

если я правильно понимаю - том 2, параграф 4.3, стр. 304 - это начало.


--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
unkis
Дата 26.11.2004, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ребята щсем болшое спасибо.
Попробуемс


--------------------
www.unkis.com
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

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


 




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


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

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