Power of n and nth root of multi-digit numbers based on recurrent relations
It is described the method of raising to a power of n and the method of getting nth root of multi-digit numbers basing on recurrent relations. Described methods are general methods of square, cube and general methods of square, cube roots. The method of getting nth root of multi-digit numbers is bas...
Збережено в:
Дата: | 2017 |
---|---|
Автор: | |
Формат: | Стаття |
Мова: | rus |
Опубліковано: |
Інститут програмних систем НАН України
2017
|
Теми: | |
Онлайн доступ: | https://pp.isofts.kiev.ua/index.php/ojs1/article/view/135 |
Теги: |
Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
|
Назва журналу: | Problems in programming |
Репозитарії
Problems in programmingid |
pp_isofts_kiev_ua-article-135 |
---|---|
record_format |
ojs |
resource_txt_mv |
ppisoftskievua/1c/2b13a9de003fa5c5d6843848bca82f1c.pdf |
spelling |
pp_isofts_kiev_ua-article-1352024-12-15T19:07:12Z Power of n and nth root of multi-digit numbers based on recurrent relations Возведение в степень n и вычисление корня степени n больших чисел на основе рекуррентных соотношений Піднесення до степеня n та обчислення кореня степені n великих чисел на основі рекурентних співвідношень Tereshchenko, A.N. УДК 519.6 It is described the method of raising to a power of n and the method of getting nth root of multi-digit numbers basing on recurrent relations. Described methods are general methods of square, cube and general methods of square, cube roots. The method of getting nth root of multi-digit numbers is based on the method of getting power of n. The method of getting nth root does not use trivial division. While nth root and power of n of multi-digit numbers are calculated the powers up to n-1 are cal-culated at the same time. The methods are bitrate where next bit (n bits – on getting nth root) of original bit sequence is handled on iteration. Описываются метод возведения в степень n и метод вычисления корня степени n больших чисел на основе рекуррентных соотношений. Описанные методы являются обобщением методов возведения в степени 2, 3 и методов вычисления квадратного и кубического корней. Метод вычисления корней степени n больших чисел основан на методе вычисления степени n. Метод вычисления корней степени n не использует операции деления. При возведении большого числа X в степень n или вычислении корня степени n одновременно с нахождением результата вычисляются значения всех степеней до n-1. Методы являются побитовыми, где на каждой итерации обрабатывается следующий бит (n бит − при вычислении корня) исходной битовой последовательности. Описується метод піднесення до степеня n та метод обчислення кореня степені n великих чисел на основі рекурентних співвідношень. Описані методи є узагальненням методів піднесення до степенів 2, 3 і методів обчислення квадратного та кубічного коренів. Метод обчислення кореня степені n великих чисел оснований на методі обчислення степені n. Метод обчислення кореня степені n не використовує операції ділення. При піднесення великого числа X до степені n та обчисленні кореня степені n одночасно зі знаходженням результату обчислюється значення всіх степенів до n-1. Методи є побітовими, де на кожній ітерації оброблюється наступний біт (n біт − при обчисленні кореня) початкової бітової послідовності. Інститут програмних систем НАН України 2017-06-14 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/135 PROBLEMS IN PROGRAMMING; No 2 (2015) ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 2 (2015) ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 2 (2015) 1727-4907 rus https://pp.isofts.kiev.ua/index.php/ojs1/article/view/135/128 Copyright (c) 2017 ПРОБЛЕМИ ПРОГРАМУВАННЯ |
institution |
Problems in programming |
baseUrl_str |
https://pp.isofts.kiev.ua/index.php/ojs1/oai |
datestamp_date |
2024-12-15T19:07:12Z |
collection |
OJS |
language |
rus |
topic |
|
spellingShingle |
Tereshchenko, A.N. Power of n and nth root of multi-digit numbers based on recurrent relations |
topic_facet |
УДК 519.6 |
format |
Article |
author |
Tereshchenko, A.N. |
author_facet |
Tereshchenko, A.N. |
author_sort |
Tereshchenko, A.N. |
title |
Power of n and nth root of multi-digit numbers based on recurrent relations |
title_short |
Power of n and nth root of multi-digit numbers based on recurrent relations |
title_full |
Power of n and nth root of multi-digit numbers based on recurrent relations |
title_fullStr |
Power of n and nth root of multi-digit numbers based on recurrent relations |
title_full_unstemmed |
Power of n and nth root of multi-digit numbers based on recurrent relations |
title_sort |
power of n and nth root of multi-digit numbers based on recurrent relations |
title_alt |
Возведение в степень n и вычисление корня степени n больших чисел на основе рекуррентных соотношений Піднесення до степеня n та обчислення кореня степені n великих чисел на основі рекурентних співвідношень |
description |
It is described the method of raising to a power of n and the method of getting nth root of multi-digit numbers basing on recurrent relations. Described methods are general methods of square, cube and general methods of square, cube roots. The method of getting nth root of multi-digit numbers is based on the method of getting power of n. The method of getting nth root does not use trivial division. While nth root and power of n of multi-digit numbers are calculated the powers up to n-1 are cal-culated at the same time. The methods are bitrate where next bit (n bits – on getting nth root) of original bit sequence is handled on iteration. |
publisher |
Інститут програмних систем НАН України |
publishDate |
2017 |
url |
https://pp.isofts.kiev.ua/index.php/ojs1/article/view/135 |
work_keys_str_mv |
AT tereshchenkoan powerofnandnthrootofmultidigitnumbersbasedonrecurrentrelations AT tereshchenkoan vozvedenievstepenʹnivyčisleniekornâstepeninbolʹšihčiselnaosnoverekurrentnyhsootnošenij AT tereshchenkoan pídnesennâdostepenântaobčislennâkorenâstepenínvelikihčiselnaosnovírekurentnihspívvídnošenʹ |
first_indexed |
2025-07-17T10:04:08Z |
last_indexed |
2025-07-17T10:04:08Z |
_version_ |
1838410461871079424 |
fulltext |
Теоретичні та методологічні основи програмування
© А.Н. Терещенко, 2015
ISSN 1727-4907. Проблеми програмування. 2015. № 2 13
УДК: 519.6
А.Н. Терещенко
ВОЗВЕДЕНИЕ В СТЕПЕНЬ n И
ВЫЧИСЛЕНИЕ КОРНЯ СТЕПЕНИ n БОЛЬШИХ ЧИСЕЛ
НА ОСНОВЕ РЕКУРРЕНТНЫХ СООТНОШЕНИЙ
Описываются метод возведения в степень n и метод вычисления корня степени n больших чисел на ос-
нове рекуррентных соотношений (n>1). Описанные методы являются обобщением методов возведения
в степени 2, 3 и методов вычисления квадратного и кубического корней. Метод вычисления корней
степени n больших чисел основан на методе вычисления степени n. Метод вычисления корней степени
n не использует операции деления. При возведении большого числа X в степень n или вычислении кор-
ня степени n одновременно с нахождением результата вычисляются значения всех степеней до n-1. Ме-
тоды являются побитовыми, где на каждой итерации обрабатывается следующий бит (n бит − при вы-
числении корня) исходной битовой последовательности.
Введение
Криптографические операции осно-
ваны на элементарных операциях таких,
как сложение, умножение, возведение в
степень больших чисел, получение остатка
по модулю большого числа и т. д. Длина
секретного ключа влияет на криптостой-
кость ассиметричных криптографических
программно-аппаратных комплексов. В
свою очередь длина ключа влияет на
быстродействие всей системы, поэтому
выбор длины ключа зависит от быстродей-
ствия каждой криптографической опера-
ции, а значит, зависит и от быстродействия
элементарных арифметических операций,
на основе которых построены криптогра-
фические операции. Оптимизации быстро-
действия элементарных операций таких,
как умножение больших чисел, возведение
в степень по модулю большого числа и
т. д. уделяется много внимания [1–4].
Цель работы – обобщение для лю-
бой степени n выше третей метода [5]
возведения в квадрат и куб большого чис-
ла, а также метода вычисления квадрат-
ного и кубического корней больших чисел
без использования каких-либо операций
деления (практический диапазон > 1024
битовых разрядов).
Постановка задачи
Пусть , 0m n – целые числа, поло-
жительное число U представлено m бита-
ми, а число W представлено mn битами:
1
0
2
m
j
j
jm uU ,
1
0
2
mn
j
j
jmn wW .
Возведение числа mU длиной в m
бит в степень n и вычисление корня сте-
пени n числа mnW длиной в mn бит
можно представить следующим образом:
n
mm
n
m uUU 11 2
n
i
ii
m
in
m
i
n uUC
0
11 2 ,
n n
mm
n
mn VRW
n n
mmm vVR 11 2
n
n
i
ii
m
in
m
i
nm vVCR
0
11 2 ,
где
)!(!
!
ini
n
Сi
n
,
2
0
1 2
m
j
j
jm uU ,
2
0
1 2
m
j
j
jm vV ,
1
0
2
m
j
j
jm rR .
На основании вышеприведенных
методов построим итерационные по-
битовые алгоритмы.
1. Возведение в любую степень n
nmU числа mU длиной в m бит.
Теоретичні та методологічні основи програмування
14
2. Вычисление целочисленных кор-
ня mV и остатка mR с длинами в m бит
любой степени n числа mnW длиной в
mn бит без использования деления.
Провести анализ сложности по чис-
лу битовых операций этих алгоритмов.
Определения и обозначения
Большими числами будем называть
числа, длина которых в битах превышает
разрядность машинного слова, то есть
свыше 32 бит. Для реализации операций с
такими числами обычный набор команд
процессора недостаточен и необходимо
использование специальных алгоритмов и
методов.
В данной работе большие числа
представлены в виде битовых последова-
тельностей. Далее в тексте под обработкой
битовых последовательностей подразуме-
вается обработка больших чисел.
Для лучшего представления матери-
ала предлагается обратная нумерация би-
тов в последовательности. В этом случае
индекс самого старшего бита равен нулю,
а индекс самого младшего бита равен
длине последовательности в битах минус
1. Такое представление удобно, так как
анализ начинается со старшего бита, а
длина последовательности не важна, так
как к проанализированной битовой после-
довательности могут добавляться младшие
биты. Такой подход является одним из
преимуществ использования данного ме-
тода, так как он дает возможность полу-
чить при необходимости точность вычис-
ления больше заданной при нахождении
корней больших степеней от больших чи-
сел, используя один и тот же алгоритм.
Таким образом, битовая последова-
тельность записывается в обычном поряд-
ке, т. е. самый старший бит располагается
слева, и в этом случае младшие биты до-
бавляются с правой стороны. Далее приве-
ден пример битовой последовательности
длиной в 8 бит:
76543210 xxxxxxxx ,
что равносильно выражению:
4
3
5
2
6
1
7
0 2222 xxxx
06
2
5
3
4 222 xxxx .
Введем следующие обозначения.
10121 , 21111001 представление числа 121
в десятичной и двоичной системах счисле-
ния.
i номер итерации, нумерация начинают-
ся с нуля ( 0i ).
iX битовая последовательность.
iY квадрат последовательности iX .
iZ куб последовательности iX .
iii ZYX ,, , 0i , битовые последователь-
ности длиной в 1i , )1(2 i и )1(3 i бит,
соответственно. Длины последовательнос-
тей 0Y и 0Z равны 1 и являются исключе-
ниями.
iii ZYX ,, вычисляются на итерации i на
основе 111 ,, iii ZYX , полученных на
предыдущей 1i итерации.
jjj zyx ,, j -ые биты в последовательно-
стях ZYX ,, соответственно.
0ix операция сравнения выражений с
левой и правой сторон.
Можно записать следующие выра-
жения для квадрата и куба числа X :
...3210 xxxxX ,
...76543210
2 yyyyyyyyYX ,
...11108876543210
3 zzzzzzzzzzzzZXYX
1,0 mi индексу i последовательно
присваиваются значения 0, 1, …, 1m , m .
1ix операция присвоения зна-
чения выражению с левой стороны значе-
ния с правой стороны. Необходимо отли-
чать от операции 1ix , где значения с ле-
вой и правой сторон не изменяются по за-
вершению операции. В выражении
1 ii значение i увеличивается на 1
после окончания операции. Знак может
использоваться несколько раз в одной опе-
рации для того, чтобы сократить запись и
показать, что одинаковые значения при-
сваиваются различным элементам. Так две
операции 10 X , 10 Y можно заменить
Теоретичні та методологічні основи програмування
15
одной 100 YX . Символы и
также могут использоваться одновременно
в одной операции:
2102 1015122 X , что обо-
значает вычисление выражения 122 ,
результат которого 105 ,
2101 представлен в
двух системах счисления, и которое запи-
сывается в 2X .
.124;12:1
.4;2:0
101011
01011
XYYXXx
YYXXx
операция вычисления выражений по
условию. Если 1 0x , то выполняются
операции 1 0 2X X ; 401 YY . Если
1 1x , то выполняются операции
1 0 2 1X X ; 1 0 14 2 1Y Y X .
Порядок выполнения операций в
выражениях (формулах, алгоритмах и таб-
лицах) определяется символами ‘;‘ и ‘,‘.
Выражение разбивается на группы
символом ‘;‘. Последовательность групп в
выражение выполняется в обычном поряд-
ке слева направо. Операции внутри груп-
пы разделяются запятой и выполняются в
обратном порядке – справа налево. Если
операцию обозначить номером ее выпол-
нения, то получим строку, определяющую
порядок выполнения операций:
2, 1; 6, 5, 4, 3; 8, 7.
Выражения далее отличаются:
0i ; 1ix , 1i .
0i , 1ix ; 1i .
В первом выражении значение один
присвоится элементу с индексом 1, а во
втором с индексом 0, так как порядок
выполнения операций отличается:
1; 3, 2.
1, 2; 3.
Возведение в квадрат и
вычисление квадратного корня
Возведение в квадрат.
Рассмотрим последовательное по-
лучение формул для вычисления битовых
последовательностей iX и iY , 1,0 mi .
Рассмотрим возведения в квадрат
1-битового числа 0x )0( i .
Начальная итерация:
00 xX , 0
2
0
2
00 xxXY .
Добавим к биту 0x справа младший
бит 1x и рассмотрим формулы для вычис-
ления квадрата из полученной битовой по-
следовательности ( 1i ):
10101 2 xXxXX , (1)
2
10
2
10
2
11 2 xXxXXY
2
110
2
0 224 xxXX
100 1224 xXY
110 1)22(4 xXY .
Окончательно получаем:
1 0 1 14 (2 1)Y Y X x . (2)
Для различных значений 1x , форму-
лы (1), (2) принимают следующий вид:
.124;12:1
.4;2:0
101011
01011
XYYXXx
YYXXx
(3)
Обратим внимание, что в формуле
(1) коэффициенты 4 и 2 в выражении
124 101 XYY стоят с разных сто-
рон: «4» показывает сдвиг на 2 бита, при
этом «2» является коэффициентом при 1X .
Такая запись используется далее, чтобы
отделить битовые сдвиги от коэффициен-
тов при анализе полученных выражений.
Рассмотрим возведение в квадрат 3-
битовой последовательности 210 xxx , т. е.
добавим еще один младший разряд справа
( 2i ):
212102102 22 xXxxxxxxX ,
2
21
2
210
2
22 )2()( xXxxxXY
2
221
2
1 224 xxXX
211 )122(4 xXY
221 )12(4 xXY . (4)
Окончательно получаем:
2 1 2 24 (2 1)Y Y X x .
Теоретичні та методологічні основи програмування
16
У предыдущего выражения все ин-
дексы больше на 1 по сравнению с (2).
По аналогии с формулами (4) для
битовой последовательности 3210 xxxx
можно получить формулы для 3X и 3Y :
3232103 2 xXxxxxX ,
3223 )12(4 xXYY .
Для вычисления 1mY воспользуем-
ся рекуррентными соотношениями.
Лемма 1. Битовые последователь-
ности iY , 1,0 mi можно получить на
основе 1iX , 1iY и бита ix :
iiiii xXxxxxX 2... 1110 ,
iiii xXYY )12(41 , 1,0 mi .
Доказательство. Добавим к бито-
вой последовательности 1iX справа бит
ix по аналогии с (4):
iiiii xXxXX 211 ,
2
1
2
1
2 )2()( iiiiii xXxXXY
2
1
2
1 224 iiii xxXX
iii xXY )122(4 11 .
Окончательно получаем:
iiii xXYY )12(41 .
Лемма доказана.
Возведение в квадрат битовой по-
следовательности 32103 xxxxX можно
представить в виде следующих последова-
тельных шагов:
010 0xyy ,
10103210 01000 xxyyyyyy ,
2103210543210 010000 xxxyyyyyyyyyy ,
76543210 yyyyyyyy
3210543210 0100000 xxxxyyyyyy . (5)
На каждом шаге второе слагаемое
равно нулю, если младший бит нулевой.
Более удобно выражения (5) представля-
ются в виде классического столбика, пока-
занного на рис. 1.
76543210
3210
210
10
0
0
0
0
0
yyyyyyyy
xxxx
xxx
xx
x
Рис. 1. Схема возведение в квадрат
на основе предложенного метода
Согласно выражений (5) строка со-
стоит из нулей, если бит 0ix . На рис. 2
показан пример возведение в квадрат чи-
сел 1110=10112 и 1510=11112 :
1
1
0
1
10011110
10101
1001
000
10
3
2
1
0
x
x
x
x
1
1
1
1
10000111
10111
1011
101
10
3
2
1
0
x
x
x
x
Рис. 2. Примеры вычисления квадрата на
основе предложенного метода
Алгоритм 1. Пошаговое описание
алгоритма возведения в квадрат (табл. 1).
ВХОД: X – битовая последова-
тельность, m – длина последовательности
X ( 2m ).
ВЫХОД: 2XY (
2
ii XY ,
1,0 mi ).
1. Найти самый старший ненулевой бит
последовательности ...3210 xxxxX .
2. Начальная итерация 0i ;
100 YX .
3. 1 ii .
4. Найти iX на основе значения ix :
Теоретичні та методологічні основи програмування
17
.2:1
.2:0
1
1
iiii
iii
xXXx
XXx
5. Найти iY на основе значения ix
(см. (3)):
.124:1
.4:0
1
1
iiii
iii
XYYx
YYx
6. Если бит ix не последний, то перейти к
шагу 3.
Таблица 1. Пример выполнения Алгоритма
1 при вычислении квадрата числа 1011
21011 (см. рис. 2)
Шаг Операция
1 Старший бит ненулевой
2 0i ; 100 YX
3 1i
4;5
Так как 01 x , то
2101 10221 X ;
2101 100441 Y
6
Бит 1x не последний, перейти
к шагу 3
3 2i
4; 5
Так как 12 x , то
2 10 22 2 1 5 101X ;
2 10 24 4 2 5 1 25 11001Y
6
Бит 2x не последний, перейти
к шагу 3
3 3i
4;5
Так как 13 x , то
3 10 25 2 1 11 1011X ;
3 1025 4 2 11 1 121Y
21111001
6
Бит 3x последний, завершить рабо-
ту алгоритма
Вычисление квадратного корня.
Для вычисления корней небольших чисел
с допустимой погрешностью достаточно
небольшое число итераций. Для получе-
ния корней больших чисел известными
методами необходимо многошаговое вы-
числение с использованием операций
умножения, деления больших чисел, вы-
числения факториала и т. д., что услож-
няет по времени операцию вычисления
корней.
Алгоритм 2 вычисления квадратно-
го корня похож на Алгоритм 1 возведения
в квадрат, за исключением того, что про-
исходит последовательное вычитание из
последовательности 765432103 yyyyyyyyY
вместо добавления. Схема позволяет найти
остаток 33 XR , где 32103 xxxxX ,
3 0 1 2 3 4 5 6 7R r r r r r r r r .
Алгоритм 2. Пошаговое описание
алгоритма вычисления квадратного корня.
ВХОД: Y – битовая последователь-
ность, m – длина последовательности Y
( 3m ).
ВЫХОД: 2 YX , 2XYR
( 2
ii YX , 2iii XYR ,
2
1
,0
m
i ).
iR промежуточная битовая последова-
тельность длиной в 12 i бит на каждой
итерации i .
1. Если длина битовой последовательности
Y не делится на 2 нацело, то добавить
старший нулевой бит слева. Разбить по-
следовательность
...76543210 yyyyyyyyY .
на пары бит.
2. Найти самую старшую ненулевую бито-
вую пару.
3. Начальная итерация 0i ; 100 xX ,
100 yyR ; 000 XRR (см. рис. 3, 4).
4. 1 ii .
3
2
1
0
76543210
3210
210
10
0
76543210
0
0
0
0
x
x
x
x
rrrrrrrr
xxxx
xxx
xx
x
yyyyyyyy
Рис. 3. Схема вычисления квадратного
корня 76543210 yyyyyyyy
Теоретичні та методологічні основи програмування
18
1
1
0
1
0100
10101
1001
000
10
11011110
3
2
1
0
x
x
x
x
Рис. 4. Пример вычисления квадратного
корня числа 12310
5. 121 ii XX .
6. 12 ii XdY .
7. 1221 4 iiii yyRR
8. Если ii dYR , то 1ix , iii dYRR ,
иначе 0ix (см. рис. 3, 4).
9. Если биты 122 ii yy не последние, то пе-
рейти к шагу 4.
По окончании алгоритма iX будет
содержать целую часть от квадратного
корня, а iR остаток (табл. 2).
Таблица 2. Пример выполнения Алгорит-
ма 2 при вычислении квадратного корня
числа 10 2123 1111011 (см. рис. 4)
Шаг Операция
1 2
1 Добавить старший нулевой бит слева
и разбить последовательность Y
11101101 на пары бит
2 Самая старшая битовая пара нену-
левая
3 Начальная итерация 0i ;
100 xX ; 1020 101 R ;
0110 R
4 1i
5 2101 113121 X
6 2101 1015132 dY
7 2101 113340 R
8 Так как 53 , то 01 x ( 21 X )
9 Биты 42yy не последние, перейти
к шагу 4
Окончание табл. 2
1 2
4 2i
5
2102 1015122 X
6
2102 10019152 dY
7
2102 111014243 R
8 Так как 914 , то 12 x ,
2102 1015914 R
9 Биты 54yy не последние, перейти
к шагу 4
4 3i
5
2103 101111125 X
6
3 10 22 11 1 21 10101dY
7
3 10 25 4 3 23 10111R
8 Так как 2123 , то 13 x ,
2103 1022123 R
9 Биты 76 yy последние, завершить
работу алгоритма
Возведение в куб и вычисление
кубического корня
Возведение в куб. Рассмотрим по-
следовательное получение формул для вы-
числения битовых последовательностей
iX и iZ , 1,0 mi .
Начнем рассмотрение с возведения
в куб 1-битового числа 0x )0( i . Началь-
ная итерации будет следующей:
00 xX , 0
2
0
2
00 xxXY ,
0
3
000
3
00 xxXYXZ .
Рассмотрим формулу для получе-
ния куба из 1X )1( i :
3
10
3
10
3
11 )2()( xXxXXZ
3
1
2
101
2
0
3
0 23438 xxXxXX
110100 23438 xxXxYZ
1000 123438 xXYZ
1
0
00
0
1)12(3
12243
8 x
X
XY
Z
Теоретичні та методологічні основи програмування
19
11100 1312438 xXXYZ .
С учетом формулы (2) окончатель-
но получаем:
11101 )133(8 xXYZZ . (6)
Рассмотрим получение куба 3-бито-
вой последовательности 210 xxx , т. е. доба-
вим еще один младший разряд справа
)2( i :
3
21
3
210
3
22 )2()( xXxxxXZ
3
2
2
212
2
1
3
1 23438 xxXxXX
2111 123438 xXYZ
1 1
1 2
1
3 4 3 4 3
8
3 2 3 1
Y X
Z x
X
.
Окончательно получаем формулу,
похожую на (6):
22212 )133(8 xXYZZ .
По аналогии с предыдущей форму-
лой можно получить формулы для битовой
последовательности 3210 xxxx для 3Z
)3( i :
33323 )133(8 xXYZZ .
Лемма 2. Битовые последователь-
ности iZ , 1,0 mi можно получить из
битовых последовательностей 1iX , 1iY ,
1iZ и бита ix , используя следующие
формулы:
iiiii xXxxxxX 2... 1110 ,
iiii xXYY )12(41 ,
iiiii xXYZZ )133(81 , 1,0 mi .
Доказательство. Добавим к бито-
вой последовательности 1iX справа ix .
Выражение iiii xXYY )12(41 сле-
дует из леммы 1.
Находим формулу для куба новой
последовательности аналогично (6):
3
1
3
1
3 )2()( iiiiii xXxXXZ
32
1
2
1
3
1 23438 iiiiii xxXxXX
iiii xXYZ 123438 111
i
i
ii
i x
X
XY
Z
1323
34343
8
1
1
1
i
i
ii
i x
X
XY
Z
1123
1223
8
1
1 .
Окончательно получаем:
iiiii xXYZZ )133(81 .
Лемма доказана.
Алгоритм 3. Пошаговое описание
алгоритма вычисления куба числа.
ВХОД: X – битовая последова-
тельность, m – длина последовательности
X ( 2m ).
ВЫХОД: 3XZ , 2XY
(
3
ii XZ ,
2
ii XY , 1,0 mi ).
1. Найти самый старший ненулевой бит
последовательности ...3210 xxxxX .
2. Начальная итерация 0i ;
1000 ZYX .
3. 1 ii .
4. Найти iX на основе ix :
.2:1
.2:0
1
1
iiii
iii
xXXx
XXx
5. Найти iY на основе ix :
.124:1
.4:0
1
1
iiii
iii
XYYx
YYx
6. Найти iZ на основе ix :
.1338:1
.8:0
1
1
iiiii
iii
XYZZx
ZZx
7. Если ix не последний бит, то перейти к
шагу 3.
Особенностью данного алгоритма
является то, что параллельно с вычисле-
нием куба числа находим также квадрат
числа (табл. 3).
Теоретичні та методологічні основи програмування
20
Таблица 3. Пример выполнения Алгоритма 3
при вычислении куба числа 10 211 1011
Шаг Операция
1 Старший бит ненулевой
2 0i ; 1000 ZYX
3 1i
4;5;6
Так как 01 x , то
2101 10221 X ;
2101 100441 Y ;
1 10 21 8 8 1000Z
7
Бит 1x не последний, перейти к
шагу 3
3 2i
4;5;6
Так как 12 x , то
2102 1015122 X ;
2102 110012515244 Y ;
)153253(882Z
10 2125 1111101
7
Бит 2x не последний, перейти к
шагу 3
3 3i
4;5;6
Так как 13 x , то
2103 101111125 X ;
103 1211112425Y
21111001 ;
)11131213(81253Z
10 21331 10100110011
7
Бит 3x последний, завершить ра-
боту алгоритма
Сравнивая Алгоритм 1 (табл. 1) и
Алгоритм 3 (табл. 3) можно заметить, что
каждая итерация i Алгоритма 3 имеет на
один шаг больше.
Алгоритм 4. Пошаговое описание
алгоритма вычисления кубического корня.
ВХОД: Z – битовая последова-
тельность, m – длина последовательности
Z ( 4m ).
ВЫХОД: 3 ZX , 2XY ,
3XZR ( 3
ii ZX , 3
ii YX ,
3
iii XZR ,
3
1
,0
m
i ).
iR промежуточная битовая последова-
тельность длины в 13 i бит на каждой
итерации.
1. Если длина битовой последовательности
Z не делится на 3 нацело, то добавляются
старшие нулевые биты слева. Разбить на
тройки бит ...876543210 zzzzzzzzzZ .
2. Найти самую старшую ненулевую бито-
вую тройку.
3. Начальная итерация 0i ; 100 Xx ,
100 ZY , 2100 zzzR ; 000 ZRR .
4. 1 ii .
5. 121 ii XX .
6. 12 ii XdY ; iii dYYY 41 .
7. 133 iii XYdZ .
8. 231331 8 iiiii zzzRR .
9. Если ii dZR , то 1ix , iii dZRR ,
иначе 0ix , iii dYYY (см. рис. 3, 4).
10. Если биты 23133 iii zzz не последние,
то перейти к шагу 4.
По окончании алгоритма iX будет
содержать целую часть от кубического
корня, а iR остаток.
Таблица 4. Пример выполнения Алгоритма 4
при вычислении кубического корня числа
3
10 2 10 101353 10101001001 (11 ) 2 11
Шаг Операции
1 2
1
Добавить старший нулевой бит
слева и разбить
001001101010Z
на тройки бит
2
Самая старшая битовая тройка
ненулевая
3
Начальная итерация 0i ;
10 x , 1000 ZYX ;
1101020 R
Теоретичні та методологічні основи програмування
21
Окончание табл. 4
1 2
4 1i
5
2101 113121 X
6
2101 1015132 dY ;
1 2 21 4 5 9 1001Y
7 1 10 23 9 3 5 1 13 1101dZ
8 1 10 21 8 5 13 1101R
9
Так как 1313 , то 01 x
( 21 X ),
1 10 29 5 4 100Y
10
Биты 543 zzz не последние, пе-
рейти к шагу 4
4 2i
5 2 10 22 2 1 5 101X
6
2 10 22 5 1 9 1001dY ;
2 2 24 4 9 25 11001Y
7 2 10 23 25 3 5 1 61 111101dZ
8 2 10 213 8 1 105 1101000R
9
Так как 61105 , то 12 x ,
2 10 2105 61 44 101100R
10
Биты 876 zzz не последние, пе-
рейти к шагу 4
4 3i
5 2103 101111125 X
6
3 10 22 11 1 21 10101dY ;
3 2 225 4 21 121 1111001Y
7
111312133dZ
10 2331 101001011
8 3 10 244 8 1 353 101100001R
9
Так как 331353 , то 13 x ,
3 10 2353 331 22 10110R
10
Биты 11109 zzz последние, завер-
шить работу алгоритма
Сравнивая Алгоритм 2 (табл. 2) и
Алгоритм 4 (табл. 4) можно заметить, что
каждая итерация i Алгоритма 4 имеет на
один шаг больше.
Возведение в степень n и вычис-
ление корней степени n
Возведение до степени n . Найдем
сначала общую итерационную формулу
для вычисления степени числа выше тре-
тей.
Теорема 1. Выражение nD
nBA )( вычисляется на основе значений
меньших степеней 1nD , 2nD , ... , 2D ,
1D и имеет вид:
n
i
ini
n
innn DCBABAD
1
1)1()(
B
DC
DCDC
A
nn
n
n
n
n
n
nn
112
2211
)1()1(
...
,
где nDBA ,,, – целые числа, ,, BA
0, nD ,
)!(!
!
ini
n
Ci
n
, ...1 nn BB
BB 2... .
Доказательство. Найдем сначала
выражения для
1
11
i
n
i
n CC , 2,0 ni , в
общем виде:
1
11
i
n
i
n CC
))!1(1()!1(
)!1(
)!1(!
)!1(
ini
n
ini
n
)!()!1()1(
)!1()1(
)!1(!)1(
)!1()1(
iniin
nin
inii
ni
)!1()!1(
)!1()1(
)!1(!)1(
)!1()1(
ini
nin
inii
ni
)!1()!1(
)!1())1()1((
ini
nini
))!1(()!1(
)!1(
ini
nn
1
))!1(()!1(
!
i
nC
ini
n
.
Выражение вида 11
11
i
n
i
n
i
n CCC ,
1,0 ni , соответствует значениям треу-
гольника Паскаля для строк 1n и n .
Найдем выражение для 1-й степени:
BAD .
Найдем выражение для 2-й степени:
Теоретичні та методологічні основи програмування
22
2222 2)( BABABAD
BAA )12(2 .
Сделаем замену A на BD :
BDABBDA )12()122( 22 .
Найдем выражение для 3-й степени:
)(23 BADD
)())12(( 2 BABDA
BDAABDA )12()12( 23 .
Сделаем замену A на BD :
)()12(3 BDBDA
BDBBD )12()( 2
BBDDBDA 23 )()12(
BDDBDDA )12()2( 223
BDDA )133( 23 .
Используем методом математичес-
кой индукции. Найдем выражение n -й
степени на основании значения 1n -й
степени:
)()( 1 BADBAD nn
B
DC
DCDC
A
nn
n
n
n
n
n
nn
22
1
3
32
1
21
11
)1()1(
...
AB
DC
DCDC
A
nn
n
n
n
n
n
nn
22
1
3
32
1
21
1
)1()1(
...
B
DC
DCDC
A
nn
n
n
n
n
n
nn
22
1
3
32
1
21
11
)1()1(
...
.
Сделаем замену A на BD :
nA
)(
)1(
)1(..
2
2
1
3
32
1
21
1
BDBDC
DCDC
n
n
n
n
n
n
n
n
BDC
DCDC
BA
n
n
n
n
n
n
n
n
n
2
2
1
3
32
1
21
1
1
)1(
)1(...
B
D
DC
DCDC
A
n
n
n
n
n
n
n
n
n
2
22
1
3
22
1
11
1
)1(
)1(..
BAn 1 .
С учетом того, что BBD n 1)(
равносильно BD n 1)1( ( 21 ... BBn
B по условию), сделаем замену 1nA на
1)1( nD и воспользуемся формулой
Ньютона
n
i
ini
n
in DCD
0
)1()1( ,
)!(!
!
ini
n
C i
n
:
B
DDC
DCDC
A
nn
n
n
n
n
n
nn
222
1
3
22
1
11
1
)1()1(
...
B
DC
DCD
nn
n
n
n
n
n
12
1
2
21
1
1
)1()1(
...
.
Сгруппируем по степени D :
B
DC
DCC
DCC
DC
A
n
n
n
n
n
n
n
n
n
n
nn
n
n
n
1
2
1
2
22
1
3
1
3
22
1
1
1
11
1
)1(
)1()1(
)()1(
...)(
)1(
.
С учетом выражения
i
nC 1
11
1
i
n
i
n CC , 1,0 ni окончательно по-
лучаем:
B
DC
DC
DCDC
A
nn
n
n
n
n
n
n
n
n
n
n
112
223
2211
)1()1(
)1(
...
.
Теорема доказана.
Рассмотрим полученные выраже-
ния:
BAD ,
BDAD )12(22 ,
BDDAD )133( 233 .
Выражения для больших степеней
находятся аналогично, используя треу-
гольник Паскаля (см. рис. 5):
Теоретичні та методологічні основи програмування
23
1721353521717
16152015616
151010515
146414
13313
1212
111
10
n
Рис. 5. Вычисление треугольника Паскаля knС , , nk ,0 , 7,0n
BDDDAD )1464( 2344 ,
BDDDDAD )1510105( 23455 ,
B
DD
DDD
AD
1615
20156
2
345
66 ,
B
DDD
DDD
AD
172135
35217
23
456
77
.
Алгоритм 5. Пошаговое описание
алгоритма вычисления степени n числа X
(табл. 5).
ВХОД: X – битовая последова-
тельность, n – степень, m – длина после-
довательности X ( 1m ).
ВЫХОД:
k
k XD , nk ,1 .
1. Найти самый старший ненулевой бит
последовательности ...3210 xxxxX .
2. Начальная итерация 0i : Для k от 1
до n .
3. 1kD .
4. Конец цикла по k .
5. Для i от 1 до 1m
6. 1b .
7. Для j от 1 до n
8. 2bb ; bDD jj .
9. Если 0ix , то
10. 1sign , jC .
11. Для k от 1j до 1 шаг 1
Таблица 5. Пример выполнения Алгоритма
5 при вычислении 4-й степени числа
10 25 101
Шаг Операция
1 2
1 Старший бит ненулевой
2;3;4
0i ;
14321 DDDD
5;6;7 1i ; 1b ; 1j
8 221 b ; 2211 D
9
Так как 02 x , то пропустить
шаги 10–15
16;17;7 2j
8
210 100422 b ;
2103 100441 D
9
Так как 02 x , то пропустить
шаги 10–15
16;17;7 3j
8
10 24 2 8 1000b ;
3 10 21 8 8 1000D
9
Так как 02 x , то пропустить
шаги 10–15
16;17;7 4j
8
10 28 2 16 10000b ;
4 10 21 16 16 1000D
Теоретичні та методологічні основи програмування
24
Продолжение табл. 5
1 2
9;16;17
Так как 02 x , то пропустить
шаги 10–15
5;6;7 2i ; 1b ; 1j
8
221 b ;
2101 100422 D
9
Так как 03 x , то продолжить
следующий шаг 10
10 1sign , 1C
11
Так как 1011 k , то про-
пустить шаги 1214
15 2101 1015114 D
16;17;7 2j
8
10 22 2 4 100b ;
2 10 24 4 16 10000D
9
Так как 03 x , то продолжить
следующий шаг 10
10 1sign , 2C
11
Так как 1112 k , то про-
должить шаг 12
12
2 10 216 1 2 5 26 11010 ;D
1
)112(
12
C
13 1sign
14;15 2 10 226 1 1 25 11001D
16;17;7 3j
8
10 24 2 8 1000b ;
3 10 28 8 64 1000000D
9
Так как 03 x , то продолжить
следующий шаг 10
10 1sign , 3C
11
Так как 1213 k , то про-
должить шаг 12
12
3 1064 1 3 25 139D
210001011 ; 3
)123(
23
C
13 1sign
11
Так как 1k , то продолжить
шаг 12
Окончание табл. 5
1 2
12
3 10139 1 3 5 124D
21111100 ;
1
)113(
13
C
13 1sign
14;15 3 10 2124 1 1 125 1111101D
16;17;7 4j
8
10 28 2 16 10000b ;
4 10 216 16 256 100000000D
9
Так как 03 x , то продолжить
следующий шаг 10
10 1sign , 4C
11
Так как 1314 k , то про-
должить шаг 12
12
125412564D
10 2756 1011110100 ;
6
)134(
34
C
13 1sign
11
Так как 12 k ,то продолжить
шаг 12
12
25617564D
10 2606 1001011110 ;
4
)124(
26
C
13 1sign
11
Так как 11k ,то продолжить
шаг 12
12
5416064D
10 2626 1001110010 ;
1
)114(
14
C
13 1sign
14;15
4 10626 1 1 625D
21001110011
16;17;18 Завершить работу алгоритма
Теоретичні та методологічні основи програмування
25
12. kjj DCsignDD ;
)1(
kj
kC
C .
13. signsign .
14. Конец цикла по k .
15. 1 signDD jj .
16. Конец если.
17. Конец цикла по j .
18. Конец цикла по i .
По завершении алгоритма 51 D ,
252 D , 1253 D , 6254 D .
Оптимизация за счет исключе-
ния операций деления. Значения коэф-
фициента С – небольшие числа в табл. 5.
Если значения С вычислить раньше, то
можно исключить часть операций умно-
жения и все операции деления в табл. 5.
На Шаге 12 Алгоритма 5 выражение
)1(
kj
kC
C можно избежать, исполь-
зуя коэффициент kjC , в выражении
kkjjj DCsignDD , , где j , k – номе-
ра строки и элемента строки в треуголь-
нике Паскаля (см. рис. 5), что исключает
операции деления в Алгоритме 5.
Далее в табл. 6 показаны наиболь-
шие значения коэффициентов в каждой
строке треугольника Паскаля (см. рис. 5).
С учетом того, что 322 4294967296 ,
можно утверждать, что 32
2
1
,
2
n
n
C при
34n в табл. 6. Возведение в степень n
числа вычисляется на основании меньших
степеней 1n , 2n , … 2, 1, 0, то при
возведении в степень 35n умножение
на 1, kjC в Алгоритме 5 является одно-
словной операцией, что значительно
уменьшает сложность по числу однослов-
ных операций. Из табл. 6 также видно, что
при возведении в степень до 5n значе-
ния коэффициентов очень маленькие: 1, 2,
3, 4, 5, 6, …. В этом случае операций
умножения можно избежать полностью,
заменив их несколькими дополнительны-
ми операциями многословного сложения.
Анализ сложности по числу би-
товых операций. Довольно непросто
найти общую сложность Алгоритма 5, так
как присутствуют битовые операции сдви-
га, побитового сложения и вычитания, ум-
ножения однословного числа на битовую
последовательность. Попробуем вычис-
лить число битовых операций и операций
умножения на однословное число.
Лемма 3. Число операций одно-
словного умножения в Алгоритме 5 можно
выразить следующей формулой
2
)1(
mn
n
, где m – длина в битах после-
довательности, которая возводится в сте-
пень n .
Таблица 6. Наибольшее значение
2
1
,
n
n
C в каждой строке треугольника Паскаля (рис. 5)
n Значение n Значение n Значение n Значение
0 1 10 252 20 184756 30 155117520
1 1 11 462 21 352716 31 300540195
2 2 12 924 22 705432 32 601080390
3 3 13 1716 23 1352078 33 1166803110
4 6 14 3432 24 2704156 34 2333606220
5 10 15 6435 25 5200300 35 4537567650
6 20 16 12870 26 10400600 36 9075135300
7 35 17 24310 27 20058300
8 70 18 48620 28 40116600
9 126 19 92378 29 77558760
Теоретичні та методологічні основи програмування
26
Доказательство. Строки 1,0n
содержат единицы, которые заменяются
операцией сложения, поэтому эти строки
не рассматриваются. Анализируя Алго-
ритм 5 и треугольник Паскаля, очевидно,
что коэффициенты со строки 2n тре-
угольника Паскаля при возведении в сте-
пень 4 например, будут использоваться
три раза. С учетом того, что первый и по-
следний коэффициенты – единицы, сле-
дующее выражение описывает число од-
нословных операций при возведении в 2, 3,
4, 5-ю степени:
2-я степень: mm 11 ;
3-я степень: mm 3)21( ;
4-я степень: mm 6)321( ;
5-я степень: mm 10)4321( ;
6-я степень: mm 15)54321( ;
где m – длина битовой последовательно-
сти.
Коэффициенты при m описывают-
ся формулой
2
)1(
n
n для арифметичес-
кой прогрессии. Умножив на m , получаем
искомое выражение.
Лемма доказана.
Лемма 4. Число операций битового
сложения и вычитания в Алгоритме 5 мож-
но выразить следующей формулой:
m
m
m
n
n
2
)1(
2
)1( ,
где m – длина в битах последовательнос-
ти, которая возводится в степень n .
Доказательство. Битовая последо-
вательность длины m при возведении в
степень n будет иметь длину nj бит. С
учетом того, что значение nD может быть
получены на основе значений меньших
степеней 1nD , 2nD , …, D , 1 (согласно
теоремы 1) и, рассматривая шаги 11–14,
число бытовых операций сложения и вы-
читания можно выразить формулой для
арифметической прогрессии:
1
2
)1( m
n
n .
Рассмотрим число операций для
различных длин m :
1m : 11
2
)1(
n
n .
2m : 12
2
)1(
n
n .
….
1m : 1)1(
2
)1( m
n
n .
m : 1
2
)1( m
n
n .
Не учитывая второе слагаемое +1,
видим, что значения формируют также
арифметическую прогрессию с постоян-
ным коэффициентом
2
)1(
n
n . Сумма та-
ких значений может быть выражена сле-
дующей формулой:
m
m
m
n
n
2
)1(
2
)1( .
Лемма доказана.
Вычисление корня n -й степени.
Алгоритм 6. Пошаговое описание
алгоритма вычисления корня n -й степени
числа Q (табл. 7).
ВХОД: Q – битовая последова-
тельность, n – степень ( 0n ), m – длина
последовательности Q ( nm ).
ВЫХОД: n QD 1 ; 1
k
kD D ,
nk ,2 ; nDQR 1 остаток.
iR промежуточная битовая последова-
тельность длиной в 1in бит на каждой
итерации i .
1. Если длина последовательности Q не
делится на n нацело, то добавляются
n
n
m
m
старших нулевых бит слева.
Разбить ......... 121110 nnnn qqqqqqQ
на секции длиной в n бит.
2. Найти самую старшую ненулевую бито-
вую секцию.
3. Начальная итерация 0i :Для k от 1
до n .
4. 1kD .
5. Конец цикла по k .
Теоретичні та методологічні основи програмування
27
6. 1100 ... nqqqR ; 0 0 nR R D .
7. Для i от 1 до
n
m 1
.
8. 2b ; bDD 11 ; 111 DT .
9. Для j от 2 до n
10. 2bb ; bDD jj ; jj DT .
11. 1sign .
12. Для k от 1j до 1 шаг 1
13. kkjjj TCsignTT , .
14. signsign .
15. Конец цикла по k .
16. 1 signTT jj .
17. Конец цикла по j .
18. 111 .... nnininiii qqqbRR .
19. Если ni TR , то
20. nii TRR ; 0nT .
21. Для j от 1 до n
22. jj TD .
23. Конец цикла по j .
24. Конец если.
25. Конец цикла по i .
Таблица 7. Пример выполнения Алгорит-
ма 6 при вычислении корня 4-ой степени
числа
4
10 2 10 10640 1010000000 (5 ) 3 5 ,
10m , 4n
Шаг Операция
1 2
1
Длина последовательности
21010000000 не кратна четы-
рем. Добавить два старших ну-
левых бита 2001010000000
2; 3; 4
0i ;
14321 DDDD
5; 6
1020 20010 R ;
1120 R
7 1i
8
2b ; 211 D ;
2101 11312 T
9 2j
Продолжение табл. 7
1 2
10
210 100422 b ;
2 10 21 4 4 100D ; 42 T
11 1sign
12 1k
13
2 10 24 1 2 3 10 1010T
( 22,2 C )
14 1sign
15; 16 2102 100191110 T
17; 9 3j
10
10 24 2 8 1000b ;
2103 1000881 D ; 83 T
11 1sign
12 2k
13
3 10 28 1 3 9 35 100011T
( 33,3 C )
14 1sign
12 1k
13
3 10 235 1 3 3 26 11010T
( 32,3 C )
14 1sign
15;16 3 10 226 1 1 27 11011T
17; 9 4j
10
10 28 2 16 10000b ;
4 10 21 16 16 10000D ;
164 T
11 1sign
12 3k
13
104 124274116T
21111100 ( 44,4 C )
14 1sign
12 2k
13
104 70961124T
21000110 ( 63,4 C )
14 1sign
12 1k
13
4 10 270 1 4 3 82 1010010T
( 42,4 C )
Теоретичні та методологічні основи програмування
28
Продолжение табл. 7
1 2
14 1sign
15; 16 4 10 282 1 1 81 1010001T
17; 18 2 2 10 22 16 1000 40 11000R
19
Так как 8140 , то пропустить
шаги 20, 21, 22, 23, 24
25; 7 2i
8
2b ; 221 D ;
2101 101514 T
9 2j
10
10 22 2 4 100b ;
2 10 24 4 16 10000D ;
162 T
11 1sign
12 1k
13
2 10 216 1 2 5 26 11010T
( 22,2 C )
14 1sign
15; 16 2 10 226 1 1 25 11001T
17; 9 3j
10
10 24 2 8 1000b
3 10 28 8 64 1000000D ;
643 T
11 1sign
12 2k
13
2531643T
10 2139 10001011 ( 33,3 C )
14 1sign
12 1k
13
5311393T
10 2124 1111100 ( 32,3 C )
14 1sign
15; 16 3 10 2124 1 1 125 1111101T
17; 9 4j
10
10 28 2 16 10000b ;
4 1016 16 256D
Окончание табл. 7
1 2
2100000000 ; 2564 T
11 1sign
12 3k
13
125412564T
10 2756 1011110100
( 44,4 C )
14 1sign
12 2k
13
25617564T
10 2606 1001011110
( 63,4 C )
14 1sign
12 1k
13
5416064T
10 2626 1001110010
( 42,4 C )
14 1sign
15; 16
116264T
10 2625 1001110001
17; 18
016402R
10 2640 1010000000
19
Так как 625640 , то продол-
жить шаг 20
20
2 10 2640 625 15 1111R ;
04 T
21;22;
23
51 D , 252 D , 1253 D ,
6254 D
24; 25 Завершить алгоритм
Результат вычисления корня 4-й
степени равен 101 5D , остаток 102 15R .
Лемма 3 применима также к Алго-
ритму 6. Число однословных операций
умножения для вычисления квадратного и
кубического корней соответствует выра-
жениям m и m3 , это говорит о том, что
сложность вычисления данных корней по
числу таких операций имеет линейную
сложность.
Теоретичні та методологічні основи програмування
29
Вывод
В работе описаны метод возведения
в степень n (Алгоритм 5) и метод вычис-
ления корня степени n (Алгоритм 6)
больших чисел на основе рекуррентных
соотношений ( 1n ). В Теореме 1 доказа-
но, что методы возведения в степени 2 и 3
являются частными случаями обобщенно-
го метода возведения в степень n большо-
го числа. Проведен анализ сложности по
числу битовых операций сложения, вычи-
тания и умножения алгоритма возведения
в степень n в зависимости от длины в би-
тах m исходного большого числа и степе-
ни n . Сравнивая алгоритмы, видно, что
Алгоритм 6 вычисления корня степени n
больших чисел основан на Алгоритме 5
вычисления степени n с небольшими из-
менениями. Показано, каким образом ис-
ключаются операции деления в предло-
женных алгоритмах. Спецификой описан-
ных алгоритмов является то, что при воз-
ведении большого числа X в степень n
или вычислении корня степени n одно-
временно с нахождением результата вы-
числяются значения всех степеней до
1n , что можно эффективно использовать
в «Гибком алгоритме возведения в степень
по модулю» для предварительного вычис-
ления степеней. Методы по своей природе
являются побитовыми, поэтому рекомен-
дуется использование методов для вычис-
ления степеней, не превышающих 35
( 35n ), так как в этом случае длина в би-
тах коэффициентов треугольника Паскаля
не превышает длины машинного слова в
32 бита, что позволяет минимизировать
использование многословных операций. В
работе приведены схема возведения в
квадрат и схема вычисления квадратного
корня. В работе доказаны 4 леммы. В виде
таблиц продемонстрированы примеры вы-
полнения описанных алгоритмов для раз-
личных степеней.
1. Кнут Д. Искусство программирования для
ЭВМ: Пер. с англ. / Под ред. Бабенко. – М.:
Мир, 1977. – 2. – 734 с.
2. Задірака В., Олексюк О. Ком’пютерна
арифметика багаторозрядних чисел. – К.,
Наук. видання. – 2003. – 263 с.
3. Карацуба А.А., Офман Ю.П. Умножение
многоразрядных чисел на автоматах //
ДАН CCCP, 145 (1962). – С. 293–294.
4. Березовский А.И., Задирака В.К., Шевчук
Л.Б. О тестировании быстродействия ал-
горитмов и программ выполнения основ-
ных операций для ассиметричной крипто-
графии // Кибернетика и системный ана-
лиз. – 1999. – № 5. – С. 61–68.
5. Терещенко А.Н. Быстрое вычисление квад-
ратного и кубического корней без исполь-
зования операций умножения и деления //
Искусственный интеллект. – 2006. – № 3.
– С. 783–792.
Получено 12.09.2014
Об авторе:
Терещенко Андрей Николаевич,
кандидат физико-математических наук.
Место работы автора:
ООО “СимКорп - Украина”
Старший инженер-программист
Киев, Стусса 35/37.
E-mail: teramidi@ukr.net
mailto:teramidi@ukr.net
|