Рассмотренный метод носит название бинарного (он был известен еще в
древней Индии) и может быть обобщен на произвольное значение числа N .
Для этого запишем /VB двоичном коде, напримерN= 19 = (10011)
2
. Исклю-
чим цифру старшего разряда, которая всегда равна единице, а в остальных раз-
рядах произведем замену нулей и единиц буквами X и SX по правилу: 1-+SX,
0 -* S . Для числа N = 19 получим SSSXSX. Эта последовательность букв дает
правило вычисления хг , если по букве S результат предыдущего шага возво-
дить в квадрат, а по букве X умножать на х . Для нашего примера получим по-
следовательность шагов х
2
, х
4
, х
ь
, х
9
, х
18
, х
19
Оценим количество умножений. Двоичное представление числа ./Vсодержит
Llog N J + 1 бит, где LaJ — наименьшее целое, не превосходящее а . Пусть в
этом представлении содержится v единиц. Буква S появляется при замене
каждого бита, кроме первого, а буква X — при замене каждой единицы, кроме
•первой. Поэтому общее количество умножений равно Llog 7VJ + v — 1. Вели-
чина v имеет максимальное значение, равное ^
тях
= Llog
2
TV J + 1, если двоич-
ное представление состоит из одних единиц, поэтому максимальное количест-
во умножений равно 2Llog
2
7VJ . Если N равно степени двойки, то v = 1, и в
этом случае количество умножений минимально и равно logj/V.
Бинарный метод позволяет сократить количество умножений, однако не
гарантирует минимума. Покажем это на примере. Пусть N= 15 = (1111)
2
~*
-> SXSXSX, что дает последовательность х
2
, х
3
, х
6
, х
1
, х
14
, х
15
»на вычисле-
ние которой затрачивается шесть операций умножения. То же самое можно
сделать за пять операций следующим образом:*
2
, х
3
, х
6
, х
12
, x
ls
.
Сокращение количества умножений стало возможным благодаря тому,
что число 15 имеет своими множителями числа 3 и 5. В общем случае составное
число можно записать как N~ pq . При таком представлении сначала вычисля-
ется число у = х
р
,а затем число .у = (x
p
)
q
= xr .
Описанный алгоритм называется методом множителей и формулируется
следующим образом:
1) если JV= 1, то вычислений не требуется;
2) если /V — простое, то для получения х^ сначала по методу множителей
вычисляется хг~ * , а затем результат умножается на д:;
3) в остальных случаях число N представляется в виде N = pq , где р ~
наименьший простой делитель N и q > 1.
С помощью метода множителей сначала находится у = х
р
, а затем y
q
-
х . ': ' i .
Пример 2.2. Пусть N= 21 = 3.7. Тогда получим х
2
, х
3
, х
6
, х
12
, x
is
, х
21
.
Хотя метод множителей дает в среднем лучшие результаты по сравнению с J
бинарными, в некоторых случаях он может проигрывать последнему. Напри-
мер, при N = 33 метод множителей требует семи операций умножения, а би-
нарный — только шести.
В ряде случаев оба рассмотренных метода оказываются неоптимальными.
Например, если 7V = 23, то оба метода требуют семи операций умножения,
однако х
23
можно вычислить за шесть операций умножения следующим обра-
зом: х
2
, х
3
, X
s
, х
10
, х
20
, х
23
.
Поскольку использование любого из рассмотренных методов не гаранти-
рует минимального количества умножений, для оценки степени их оптималь-
18