Можно ускорить умножение непосредственно на двойку - модуль потом легче брать. Соответственно можно выбрать вариант быстрого возведения в степень, которое часто умножает именно на два, и сэкономить на специальном определении модуля.
Это может быть и не сделано в gmp.
А n какого порядка?
-- Сб июн 15, 2013 21:29:15 --
В gmp, похоже, алгоритм оперирует сразу несколькими битами степени, поэтому то, что показатель именно 2, уже неважно.
n очень большое по размеру, может быть 500..1000 двоичных разрядов. Эта операция (возведение в степень по модулю) не делается в два приёма (сначала степень, а потом модуль), для больших чисел она считается по специальным алгоритмам, один такой вроде называется "метод квадратов". GMP считает от 1 до 3 секунд. Вот мне интересно, можно ли это ускорить, возможно есть ещё алгоритмы, которые за счёт того, что основание 2, работают быстрее.
P.S. Собственно это тeст Фepма - проверка большого числа на простоту. Если результат равен 1, то с большой вероятностью n простое.