
- •1.Симметричные
- •2.Асимметричные
- •Асимметричноешифрование.
- •Алгоритмпередачисекретногоключапооткрытомуканалу
- •Лекция№2 Элементытеориичисел
- •АлгоритмЕвклида
- •Лекция№3
- •1)ПлотностьпоявленияпростыхчиселназаданноминтервалепадаетсувеличениемN.
- •Лекция№4 Получениепростыхчисел.
- •1)Самыйдревнийспособполученияпростыхчисел,какмыужезнаем,-
- •РешетоЭратосфена
- •7.Б.Увеличитьсчетчикpна2.Перейтикпункту7.
- •ПроверкапростотычиселМерсенна
- •ТестЛюка-Лемера
- •Лекция5
- •Разложениечиселна2простыхсомножителя
- •АлгоритмБухштаба
- •АлгоритмФерма
- •Лекция№6 Числовыефункции
- •ФункцияЭйлера
- •Мультипликативнаяфункция
- •ФункцияМебиуса
- •0,Еслиdделитсянаквадратнекоторогоростогочисла.
- •1)Находимвседелителиdi|m
- •Числоваяфункция
- •2.ВозведениенатуральныхчиселпомодулювбольшиестепенипосхемеГорнера
- •Лекция8 Сравнимостьпомодулю.Модулярнаяарифметика
- •Свойстваоперацийсравнения
- •Лекция9 Модулярнаяарифметика(продолжение)КвадратичныевычетыСтепенныевычеты
- •Лекция10 Общаяалгебра
- •1)Замкнутость;
- •1)Замкнутость:длялюбыхαиβизSэлементпринадлежитS,где(*)-
- •Лекция11 Конечныеполя
- •Характеристикаполя
- •Вычислениеобратныхэлементов
- •11.Какиематематическиеоперациииспользуютсявалгоритмах? лекция12 Многочленынадконечнымполем
- •ПримитивныеполиномынадполемGf(p)
- •Алrебраическиеструктурынадмножествоммногочленов КольцомногочленовнадполемGf(p)
- •Корнимногочлена
- •Лекция13 Расширениеполей
- •Лекция14 Дополнительныйматериализраздела Теориячисел
- •1.Уравнениясравнений
- •1)Имеется1решение
- •2)Неимеетсярешений
- •2.Китайскаятеоремаобостатках
- •3.Тестированиечиселнапростоту Псевдопростыечисла
- •ТестЛюка
- •4.ЧислаКармайкла
- •5.ПолучениепростыхчиселдляалгоритмаRsa Процедураполученияустойчивыхпростыхчисел
- •Лекция15
- •1.Генераторыпсевдослучайныхпоследовательностей
- •2.ГпсПнаосновепроизведениямногочленов
- •Произведениямногочленов
- •Лекцич16 СпособыпредставленияэлементовполяGf(2n)
- •АрифметическиеоперациинадэлементамиполяGf(2n), заданнымивстандартномбазисе
- •Классическаясхемаумножения
- •МатематическаямодельалгоритмаRijndael
- •РаундпреобразованияалгоритмаRijndael
- •4.КакиешагисодержитраундшифрованияалгоритмаRijndael?
- •Перечень темпопрактическимзанятиям
- •Списоклитературы
2.ВозведениенатуральныхчиселпомодулювбольшиестепенипосхемеГорнера
Пустьзадановыражениевида
yaxmodm, (1.1)
гдеaN-основаниестепени,
xN-степеньвыражения,
mN-числовоймодуль,число,нормирующеевыражениевдиапазоне
[0..m−1],
mod-знакоперациивзятияостаткаотделенияделимогоaxнаделитель
m,
yN-результатвычисленноговыражения,лежащийвдиапазоне
[0..m−1],
N-множествонатуральныхчисел.
Пустьвсеоперациипроизводятсянаднатуральнымичислами,целочисленно,безокруглений.
Принепосредственномвычислениизначениевыраженияaxможет
выйтизаразмерымашинногослова(значениякоторогомогутлежатьвдиапазоне[0..232−1])ужепрималыхзначенияхaиx,напримерприa=3иx=21.Поэтомунеобходимыдругиемеханизмыполучениярезультата,полагая,чтобудетиспользоватьсямодульнаяарифметика.
СхемаГорнераобладаетследующимиособенностями:
-выражение(1.1)вычисляетсяприограниченияхнадиапазоннатуральныхчиселдляПЭВМ(промежуточныерезультатыберутсяпомодулю);
-каждаяоперацияразбиваетсянаподмножествоэквивалентных;
-используется,вотличиеотпоследовательноговозведениячислаaвстепень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ввидедвоичногочисла
(двоичногополинома):
x=x0?20+x1?21+x2?22+...+xk-1?2k-1 или
k1
x
i0
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,степениxимодуля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.Еслистепеньxнечетна(остатокотделенияна2равенединице),тоy=a,иначеy=1.
7.Длявсехi1,k1выполняемследующиедействия:
7.а)r=[(rmodm)·(rmodm)]modm=r2modm;
7.б)еслиi-ыйбитчислаxравенединице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
k1xxi2
, x{0,1}. В отличие от первого варианта схемы Горнера
i0
последовательнорассматриваютсядвоичныеразрядычислаxвнаправлениипониженияномераразряда.Тогдавозведениевстепеньможновыполнитьпо
следующейсхеме:
k1 i
yaxmodmai0xi2modm
(...((((aXk1)2modmaXk2)2modmaXk3)2...aX1)2modmaX0modm.
Пример1.14.Вычислимy=axmodmприa=9,x=5,m=31.Числоxвдвоичномвидеможнопредставитькак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−1иr=a2modm.
8.Еслиxi=1(i-ыйразрядчислаxравен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вдвоичномвидеможнопредставитькак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издесятичнойформыпредставлениявдвоичную.Привводечислаxиегосохранениивмашиннойпеременнойоно
ужебудетпредставленовдвоичнойформе.Поэтомуможнонепереводитьчисла,адляработысотдельнымиразрядами(битами)двоичногочислаиспользоватьпрограммныеметодики,описанныевприложении.
Вопросыдлясамопроверки.
1.ДлячегонужнасхемаГорнера?
2.КакработаетсхемаГорнера?
3.КакимиособенностямиобладаетсхемаГорнера?
4.Какможнопредставитьчисловвидестепенейоснованиясчисления?
5.ЧтодаетразложениестепенивсхемеГорнеравдвоичноепредставление?
6.КакиеограничениянакладываютсянавходныезначениясхемыГорнера?
7.Какможновыполнитьпереводчисласдлинойвмашинноесловоиздесятичнойвдвоичнуюсистемусчисления?
8.КакможновыполнитьвозведениедвойкивстепеньспомощьюкомандЭВМ?
9.КакиематематическиеоперациииспользуютсявсхемеГорнера?
10.Пояснитевторойвариантметодавозведениячиславстепень.