Ускоренное умножение сверхбольших чисел
Назначение: Программа предназначена для умножения сверхбольших чисел, представленных в памяти ЭВМ линейными динамическими массивами.
Область применения: Теория чисел - программа может использоваться при определении сверхбольших чисел Мерсенна, чисел Евклида, простых чисел, при определении закономерности распределения простых чисел. Также программа может использоваться в теоретической физике, при тестировании мощности вычислительных систем.
Используемый алгоритм. В программе реализован алгоритм, разработанный автором. Пользователь вводит разрядность двух чисел, а затем последовательность их десятичных цифр, начиная с разряда единиц ( в демонстрационной версии ввод цифр с консоли заменен на использование генератора псевдослучайных чисел). В памяти ЭВМ числа хранятся в форме линейных динамических массивов. Арифметические операции при таком представлении чисел выполняются по правилам длинной арифметики, например, по схеме умножения столбиком - множимое умножается на очередную цифру множителя и полученный результат записывается в столбик со смещением вправо на один разряд по отношению к предыдущей записи. Когда все записи сформированы, выполняется суммирование всех цифр столбика по вертикали в каждом из разрядов итога, а его переполнение переносится в старшие разряды. Вычислительный процесс по этой схеме выполняется существенно быстрее, если предварительно сформировать в виде линейных динамических массивов результаты умножения множимого на цифры 2, 3, 4, 5. 6, 7, 8 и 9. В схеме умножения столбиком они многократно используются с соответствующим сдвигом в зависимости от номера разряда множимого. После суммирования цифр по вертикали столбика переполнения разрядов не учитываются. Полученный результат умножения затем преобразуется в линейный динамический массив с учетом переноса в старшие разряды переполнения. Для разрядности чисел порядка 10 млн трудоемкость по алгоритму ускоренного умножения меньше в 2,5 раза по сравнению с традиционным алгоритмом и снижается с увеличением разрядности множителя.
Функциональные возможности. Функциональные возможности могут быть ограничены размером свободной динамической памяти ЭВМ. В демонстрационном примере для чисел множимого и множителя предполагается разрядность до 50 млн, а для результата их умножения - 100 млн.
Инструментальные средства создания - Microsoft Visual Studio 2010, Visual C++.
Тип реализующей ЭВМ IBM PC
Вид и версия операционной системы Microsoft Windows
Язык программирования C++, объем программы 41 Кбайт.
Вложение | Размер |
---|---|
listing_qwik_mult.doc | 41 КБ |