Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗахКриптология курс лекций 2 - копия.docx
Скачиваний:
5
Добавлен:
24.09.2019
Размер:
5.15 Mб
Скачать

2.ВозведениенатуральныхчиселпомодулювбольшиестепенипосхемеГорнера

Пустьзадановыражениевида

yaxmodm, (1.1)

гдеaN-основаниестепени,

xN-степеньвыражения,

mN-числовоймодуль,число,нормирующеевыражениевдиапазоне

[0..m−1],

mod-знакоперациивзятияостаткаотделенияделимогоaxнаделитель

m,

yN-результатвычисленноговыраженияежащийвдиапазоне

[0..m−1],

N-множествонатуральныхчисел.

Пустьвсеоперациипроизводятсянаднатуральнымичислами,целочисленно,безокруглений.

Принепосредственномвычислениизначениевыраженияaxможет

выйтизаразмерымашинногослова(значениякоторогомогутлежатьвдиапазоне[0..232−1])ужепрималыхзначенияхx,напримерприa=x=21.Поэтомунеобходимыдругиемеханизмыполучениярезультата,полагая,чтобудетиспользоватьсямодульнаяарифметика.

СхемаГорнераобладаетследующимиособенностями:

-выражение(1.1)вычисляетсяприограниченияхнадиапазоннатуральныхчиселдляПЭВМ(промежуточныерезультатыберутсяпомодулю);

-каждаяоперацияразбиваетсянаподмножествоэквивалентных;

-используется,вотличиеотпоследовательноговозведениячисластепеньx,меньшеоперацийумноженияиз-заразложениястепенивыражения(1.1)насуммустепенейчисла2.

Десятичноечислоxможнопредставитьввидесуммыединиц,десятков,сотен,тысячит.д.,тоестьввидедесятичногополинома:

x=x0?100+x1?101+x2?102+...+xk-1?10k-1,

гдеxi=[0..9]-являетсядесятичнымчислом,

i0,k1,kN-число,такое,

чтоx≤10k.Например,десятичноечисло50921можнозаписатьввидеполинома:

5092110=5?104+0?103+9?102+2?101+1?100(слеванаправо:5вразряде

десятковтысяч,0-вразрядетысяч,9-вразрядесотен,2-вразрядедесятков,а1-вразрядеединиц).

Аналогично,можнопредставитьчисловидедвоичногочисла

(двоичногополинома):

x=x0?20+x1?21+x2?22+...+xk-1?2k-1 или

k1

x

i0

i

x2i, (1.2)

гдеxi={0,1}-двоичноечисло,

i0,k1,kN-числодвоичныхразрядов,

необходимоедляпредставлениячислаx(x≤2k).Например,двоичноечисло

10111можнозаписатьввидеполинома:

101112=1*104+0*103+1*102+1*101+1*100(слеванаправо:1вразрядедесятковтысяч,0-вразрядетысяч,1-вразрядесотен,1-вразрядедесятков,а1-вразрядеединиц).

Тогда из формул (1.1) и (1.2), при использовании модульной

арифметики,следует,что:

k1

i

yaxmodmai0Xi2

modm

a20

X0modma21

2

X1modma2

X2modm...a2

k1

Xk1modmmodm.

(1.3)

  

Здесьxiзадаютi-ыедвоичныеразрядыстепениx.

Всхеме Горнера выражение y вычисляется с меньших номеров

двоичныхразрядоввсторонувозрастаниястепениi.Членr=a2iXimodm

(i0,k1)из(1.3)приxi=1нетребуетсявычислятьзаново,ссамого

начала, так как его можно получить следующим образом:

i

a2

modma

2i1

2modm

modm,позначениюпредыдущегошага.

АлгоритмработысхемыГорнера.

ОпишемалгоритмсхемыГорнерапошагам.Навход:числаa,x,mN.

Навыходе:yNилисообщениеонеприменимостиалгоритма.

1.Вводсконсолизначенияоснованиястепениa,степенимодуляm.

2.Еслиm=0,тоделениенаноль,выход.

3.Еслиa=0,торезультатравенy=0,переходкпункту9.

4.Еслиa=1илиx=0,торезультатравенy=1,переходкпункту9.

5.Производимпоискдлячислаxверхнейграницы,являющейсястепеньючисла2:числоkNтакое,чтоx≤2k,тоестьk≥log2x.

5.а)Пустьr=20иk=0;покаk<32(максимальноечислоразрядов

вмашинномслове)иr≤x,товозводим2встепеньk:r=2kиувеличиваемk

наединицу.

5.б)Еслиk=0илиk>32,тозадачанерешаетсявустановленныхусловиях,выход(число32обозначаетмаксимальнуюстепеньдвойкидлямашинногослова,тоестьчисло232задаетмаксимальноечислоразличныхзначений,которыеможносохранитьвмашинномслове).Иначепункт6.

6.Пустьr=a.Еслистепеньечетна(остатокотделенияна2равенединице),тоy=a,иначеy=1.

7.Длявсехi1,k1выполняемследующиедействия:

7.а)r=[(rmodm)·(rmodm)]modm=r2modm;

7.б)еслиi-ыйбитчислаавенединицеxi=1,тоy=(y·r)modm.

8.Выводрезультатаy.Выход.

2

ВычислительнаясложностьсхемыГорнераравнаO(log3(x)).

Пример1.13.Необходимочислоa=2возвестивстепеньx=25ипривестирезультатпомодулюm=29.

Тогдаk,удовлетворяющеенеравенствуk>log2x,равно5.

Числоxпредставимовдвоичнойформекакx=2510=110012.Эточислоявляетсянечетным.

Нашаге6получаем,чтоr=a=y=2.

Далеепредставимшагввидетрассировочнойтабл.1.10:

Таблица1.10.Трассировочнаятаблица

Шагивцикле

Условиеi<k

Значениеxi

r

y

доцикла

-

1

2

2

шагi=1

да

0

4

2

шагi=2

да

0

16

2

шагi=3

да

1

256mod29=24

48mod29=19

шагi=4

да

1

576mod29=25

475mod29=11

шагi=5

нет

-

Выходизцикла

Ответ:y=axmodm=11.

Дополнительныепримерыдлярешения:

1)a=7,x=5,m=31.Найти

2)a=3,x=7,m=29.Найти

yaxmodm

yaxmodm

3)a=5,x=11,m=14.Найти

yaxmodm

СуществуетдругойвариантсхемыГорнеравозведенияцелыхчиселв

большие степени. Степень x также представляется в двоичном виде:

i

k1

xxi2

, x{0,1}. В отличие от первого варианта схемы Горнера

i0

последовательнорассматриваютсядвоичныеразрядычисланаправлениипониженияномераразряда.Тогдавозведениевстепеньможновыполнитьпо

следующейсхеме:

k1 i

yaxmodmai0xi2modm

(...((((aXk1)2modmaXk2)2modmaXk3)2...aX1)2modmaX0modm.

Пример1.14.Вычислимy=axmodmприa=9,x=5,m=31.Числодвоичномвидеможнопредставитькакx=510=1012.Тогдаy=axmodm=

=(((aX2)2modm·aX1)2modm·aX0)modm=

=(((a1)2modm·a0)2modm·a1)modm=

=((a2modm)2modm·a)modm=(92mod31)2mod31·9)mod31=

=(192mod31·9)mod31=180mod31=25.

Ответ:y=axmodm=25.

Опишем второй вариант схемыГорнера. Пустьпервые 6 шаговсовпадаютсалгоритмомпервоговариантасхемыГорнера.

7.Пустьрезультатy=1,переменнаяциклаi=k−r=a2modm.

8.Еслиxi=1(i-ыйразрядчислаавен1),тоy=(y2·r)modm,

иначеy=y2modm.

9.Вычислитьi=i−1.Еслиi>1,топерейтикшагу8.

10.Еслиx0=1(учестьпоследнийбитчислаx),тоy=(y·a)modm.

11.Выводрезультатаy.Выход.

Пример1.15.Вычислимy=axmodmприa=5,x=13,m=11.Числодвоичномвидеможнопредставитькакx=1310=11012.

Пустьy=1.Представимвычисленияшагов8-9ввидетрассировочной

табл.1.11.

Таблица1.11.Трассировочнаятаблица

Шаг,i

xi

y

3

x3=1

(1·11)mod14=11

2

x2=1

(112·11)mod14=(9·11)mod14=1

1

x1=0

1mod14=1

Нашаге10будетучтенпоследнийбитчислаx:y=(y·

=(1·5)mod14=5.

Ответ:y=axmodm=5.

ax0)modm=

Вычислитеповторомувариантудополнительныепримеры,представленныевыше.

Примечания.

ДляпрограммнойреализацииалгоритмасхемыГорнератребуетсяосуществлятьпереводстепениxиздесятичнойформыпредставлениявдвоичную.Привводечислаегосохранениивмашиннойпеременнойоно

ужебудетпредставленовдвоичнойформе.Поэтомуможнонепереводитьчисла,адляработысотдельнымиразрядами(битами)двоичногочислаиспользоватьпрограммныеметодики,описанныевприложении.

Вопросыдлясамопроверки.

1.ДлячегонужнасхемаГорнера?

2.КакработаетсхемаГорнера?

3.КакимиособенностямиобладаетсхемаГорнера?

4.Какможнопредставитьчисловвидестепенейоснованиясчисления?

5.ЧтодаетразложениестепенивсхемеГорнеравдвоичноепредставление?

6.КакиеограничениянакладываютсянавходныезначениясхемыГорнера?

7.Какможновыполнитьпереводчисласдлинойвмашинноесловоиздесятичнойвдвоичнуюсистемусчисления?

8.КакможновыполнитьвозведениедвойкивстепеньспомощьюкомандЭВМ?

9.КакиематематическиеоперациииспользуютсявсхемеГорнера?

10.Пояснитевторойвариантметодавозведениячиславстепень.