Метод Монтгомери применяют именно для умножения по модулю. Без него пришлось бы просто брать модуль (делить). У метода Монтгомери есть большие накладные расходы, поэтому для однократного умножения по модулю он не выгоден. Но если эту операцию надо выполнить много раз с одним и тем же модулем, как это делается при возведении в степень, то потери становятся незначительными, и метод Монтгомери обгоняет простое умножение.
Как это "незначительными"? Множители же каждый раз всё-равно надо приводить. Везде пишут, что он выгоден, если много раз используется один из множителей. В случае возведения остатка в квадрат по модулю этого нет. А в случае умножения по модулю на двойку вообще деление не требуется, достаточно сдвига на один бит и сравнения больше/меньше с модулем (и вычитания если больше). То есть для случая с основанием 2 у Монтгомери нет преимуществ.
Вот ещё статья, вроде бы то что нужно:
http://www.ccrwest.org/gordon/fast.pdfНадо разбираться.
In Section 3 we show that we can do much better:
Theorem 1. If O(logN/loglogN) powers are precomputed, then we
may compute g^n (0 <= n <= N) using only (1+o(1))logN/loglogN multiplications.
The method works for any group, and in Section 4 we discuss its use in
GF(p^m), where p is a small prime and m is large.
(для вычисления требуется примерно в 8 раз меньше умножений чем разрядность степени в битах)