Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Evgenij Masherov                     2:5020/175.2   31 May 2001  20:58:32
 To : Serge Kanilo
 Subject : Re: Вопрос
 -------------------------------------------------------------------------------- 
 
 Thu May 31 2001 20:00, Serge Kanilo wrote to All:
 
  >>  Подскажите, как можно сделать на Pascale, чтобы 10 значное число возвести
  >> в 10 значную степень (9999999999^9999999999), срочно нужно. Заранее
  >> благодарен.
 
  SK> Реализовать умножение и сложение длинных чисел наверное не проблема.
  SK> Сделать операцию возведения в целую степень из сумм и квадратов
  SK> тоже не проблема.
 
  SK> Hастоящая проблема - как представить результат (да и промежуточные
  SK> данные хранить тоже надо).
  SK> Если по символу на десятичную цифру - то 10 знаков*10^10 = около 93Гб.
  SK> Если придумаешь как это сделать, то можно тогда думать и о первых
  SK> двух шагах.
 
  SK> Да и время решения тоже наверно надо прикинуть до начала счета,
  SK> скорее всего несколько лет понадобится.
  SK> ЗЫ: Возможно преподавателя удовлетворит расчет только нескольких
  SK> тысяч или миллионов знаков нижней части числа.
 
 Я бы начал с вопроса: зачем?
 Если речь идет о получении точного значения со всеми знаками - то это
 совершенно нереально. Объем памяти полностью исключает возможность хранения в
 ОП, учитывая много промежуточных данных. А внешняя память - бОООльшой тормоз.
 
 Иная задача - возведение по модулю (т.е. после каждого умножения берется
 остаток от деления на большое число). Этот подход лежит в основе некоторых
 алгоритмов шифрования (для шифрования возводим в одну степень, для обратной
 дешифровки - в другую). Тогда надо смотреть Кнута, т.2 для начала, а потом
 искать более современные методы умножения. Hавскидку - возводить в степень
 10^10 умножениями не стоит, на это есть бинарный метод, сокращающий число
 операций "большого умножения" до менее чем сотни. Да и само умножение делается
 не в столбик (опять же к Кнуту, или к Ахо, Хопкрофту и Ульману)
 
 Hаконец, если надо получить физическую величину (т.е. с разумным количеством
 десятичных знаков) - логарифмируем и выдаем ответ в виде мантиссы и
 экспоненты.
 
 С уважением
 
 Евгений Машеров АКА СанитарЖеня
 
 --- ifmail v.2.15
  * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Вопрос   Serge Kanilo   31 May 2001 20:00:30 
 Re: Вопрос   Evgenij Masherov   31 May 2001 20:58:32 
 Re: Вопрос   Serge Kanilo   31 May 2001 23:37:27 
Архивное /ru.algorithms/3300c59e0e0f.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional