Ускоренное умножение сверхбольших чисел

Тип разработки: 
Программа
Регистрационный номер в ФАП: 
PR12011
Дата регистрации в ФАП: 
2012-09-27
Тематическая направленность: 
Теория чисел. Вычисления с сверхбольшими числами
Разработчики программы (базы данных): 
Аннотация: 

Назначение: Программа предназначена для умножения  сверхбольших чисел, представленных в памяти ЭВМ линейными динамическими массивами. 
Область применения: Теория чисел - программа может использоваться при определении сверхбольших чисел Мерсенна, чисел Евклида, простых чисел, при определении закономерности распределения простых чисел. Также программа может использоваться в теоретической физике, при тестировании мощности вычислительных систем.

Используемый алгоритм. В программе реализован алгоритм, разработанный автором. Пользователь вводит разрядность двух чисел, а затем последовательность их десятичных цифр, начиная с разряда единиц ( в демонстрационной версии ввод цифр с консоли заменен на использование генератора псевдослучайных чисел). В памяти ЭВМ числа хранятся в форме линейных динамических массивов. Арифметические операции при таком представлении чисел выполняются по правилам длинной арифметики, например, по схеме умножения столбиком -  множимое умножается на очередную цифру множителя и полученный результат записывается в столбик со смещением вправо на один разряд по отношению к предыдущей записи. Когда все записи сформированы, выполняется суммирование всех цифр столбика по вертикали в каждом из разрядов итога, а его переполнение переносится в старшие разряды. Вычислительный процесс по этой схеме выполняется существенно быстрее, если предварительно сформировать в виде линейных динамических массивов  результаты умножения множимого на цифры 2, 3, 4, 5. 6, 7, 8 и 9.  В схеме умножения столбиком они многократно используются  с соответствующим сдвигом в зависимости от номера разряда множимого.  После суммирования цифр по вертикали столбика переполнения разрядов не учитываются. Полученный результат умножения  затем преобразуется в линейный  динамический массив с учетом переноса в старшие разряды переполнения. Для разрядности чисел порядка 10 млн трудоемкость по алгоритму ускоренного умножения меньше в 2,5 раза по сравнению с традиционным алгоритмом и снижается с увеличением разрядности множителя.

Функциональные возможности. Функциональные возможности могут быть ограничены размером свободной динамической памяти ЭВМ. В демонстрационном примере для чисел множимого и множителя предполагается разрядность до 50 млн, а для результата их умножения - 100 млн.

Инструментальные средства создания - Microsoft  Visual Studio 2010, Visual C++.

Использованные при разработке материалы: 
не использовались
Регистрационный номер в Роспатенте: 
2011614576
Признак доступности программы (базы данных): 
полностью свободный доступ
Требования к аппаратным и программным средствам: 

Тип реализующей ЭВМ IBM PC
Вид и версия операционной системы Microsoft Windows
Язык программирования C++, объем программы 41 Кбайт.

Контактная информация: 
V_E_G_A@mail.ru
ВложениеРазмер
listing_qwik_mult.doc41 КБ