
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.198] |
![]() |
|
![]() |
|
|
Возник вопрос: а существует ли алгоритм модульного умножения больших чисел?
Числа - допустим 1024 бита длинной. Можно реализовать топорную схему - просто умножить числа а потом взять модуль. Но для сохранения результата умножения нужно будет уже 2048 бит. Может есть более кошерное решение? Рыл Кнута, Уорена младьшего и Вельшенбаха - не нашел. Возможно не туда смотрел - тогда прошу ткнуть носом. А при последующем взятии модуля - извольте применять деление. Может есть что-нибуть хитрое для умножения? (Хотя метод Монтгомери позволяет выполнить приведение по модулю без деления, но это все равно обходные пути, хотя и "прямее"). |
![]() |
Сообщ.
#2
,
|
|
Самый быстрый алгоритм умножения 2 БОЛЬШИХ чисел это несомненно алгоритм Шенхаге—Штрассена(смотри в эту сторону),очень интересен метод Каратцубы.
MOD большого числа я реализовал на VB если что могу исходник выложить. А насчет Кнута ты сам себе задай вопрос: Я его смотрел? |
Сообщ.
#4
,
|
|
|
Цитата Koenig @ Посмотри эту книгу Это как раз Вельшенбах, спасибо :-) Штрассен со товарищи (в смысле Карацубы) идет ждать своей очереди. Ибо преимущества использования преобразований Фурье проявляются на числах длинной на порядок больше используемых мной. ![]() Как сделать алгоритм БЫСТРЫМ я знаю. Мой вопрос был: как сделать это избежав необходимости сохранения промежуточного результата во в два раза большей памяти. Модульное умножение. |