Вычисление сверхбольших чисел вида M=a^p, в том числе чисел Мерсенна и чисел Евклида

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

 

Назначение: Программа предназначена для вычисления сверхбольших чисел вида Mp =  ap, представляемых в памяти ЭВМ линейными динамическими массивами. При этом показатель степени p может принимать значение порядка 40-100 млн и более.

Область применения: В теории чисел известны числа Мерсенна  вида Mp =  2p-1 и числа Евклида  вида Mn  = 2n-1 *(2n-1). Программа может использоваться при определении сверхбольших чисел Мерсенна, чисел Евклида, простых чисел, при определении закономерности распределения простых чисел. Также программа может использоваться в теоретической физике, при тестировании мощности вычислительных систем.

Используемый алгоритм: В программе реализован алгоритм, разработанный автором. Пользователь вводит  показатель степени двойки для вычисления числа Мерсенна. Алгоритм предусматривает максимальное использование ранее вычисленных значений степени двойки, которые можно использовать в соответствии с правилом сложения степеней. Способ умножения этих значений в виде линейных динамических массивов описан в  программе "Ускоренное умножение сверхбольших чисел" (зарегистрировано в Каталоге ФАП, номер PR12011). Пользователю предоставляется возможность внести имя файла бинарного типа, в котором хранится ранее вычисленное значение числа  с меньшей степенью двойки. Значение считывается в линейный динамический массив в виде последовательности десятичных цифр, начиная с разряда единиц. Значение степени двойки, которое пользователь вводил в начале выполнения программы будет больше, чем у считанного из бинарного файла числа, поэтому определяется их разность - как значение недостающей степени. Далее, уже без участия пользователя, алгоритм предусматривает вторую возможность использования ранее вычисленных значений степеней двойки, которые хранятся в бинарных файлах с соответствующими именами. Циклически можно использовать значения со степенями 1000, 10 000, 100 000 и 1 млн. В программе можно предусмотреть и другие заготовки степеней двойки, например 2^10 млн. Когда до заданной пользователем степени остается значение меньше 1000, то предварительно сформированное значение циклически умножается на 2 необходимое количество раз, например 999 раз, что для современных процессоров выполняется достаточно быстро. Высокая скорость выполнения расчетов в предлагаемой программе обеспечивается двумя факторами: максимальное использование ранее вычисленных значений степеней двойки; многократное использование в ходе вычислений умножения по алгоритму "Ускоренное умножение сверхбольших чисел" (PR12011). Конечные результаты вычислений чисел Мерсенна и чисел Евклида формируюся в виде динамических линейных массивов, эти значения сохраняются в бинарных и текстовых файлах. Значения, сохраненные в бинарных файлах, можно в последующем использовать для вычисления еще больших степеней двойки, что похоже на восхождение на большую высоту с ранее достигнутого места по разновеликим ступенькам лестницы.

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

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

Использованные при разработке материалы: 
Программа для ЭВМ "Ускоренное умножение сверхбольших чисел", свидетельство Роспатента № 2011614576
Регистрационный номер в Роспатенте: 
Свидетельство Роспатента № 2012615335
Признак доступности программы (базы данных): 
полностью свободный доступ
Требования к аппаратным и программным средствам: 

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

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