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

АлгоритмФерма

Алгоритм Ферма похож на алгоритм Бухштаба и являетсяэффективным,еслиураскладываемогочислаnестьделитель(который

можетинебытьпростымчислом),незначительнопревосходящий n.

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

n=x2−y2=(x−y)(x+y),

гдеx,y-неотрицательныецелыечисла.Есличислаxиyнайдены,то

(x−y)и(x+y)являютсяпростымиделителямичислаn.

Есличислоy=0,тоделителемчислаnявляется n.

Еслиизвестноyиy>0,можновычислитьчислоxкакx

ny2;

полученноеxбудетбольше n.

Описаниеалгоритма.

Навходподаетсянечетноенатуральноечислоn.

Навыходеожидается:2сомножителячислаnилисообщениеоневозможностиразложитьчислоnспомощьюалгоритма.

1.Пустьx=] n[,где]…[-операциявзятияцелойчастиотаргумента.Еслиn=x2,тоxявляетсяделителемчислаn;выход.

2.Выполнитьx=x+1.

3.Есливыполняетсяравенство

раскладываетсянамножители,выход.

x(n1),точислоn-простоеине

2

4.Вычислитьy

x2n.

5.Если]y2[=(x2-n),тоnраскладываетсянамножители(x−y)и

(x+y),выход.

6.Иначеперейтикшагу2.

Покажемистинностьшага3алгоритмаФерма.Предположим,чточислоnможнопредставитьввидепроизведенияn=ab,гдеa≤b.Алгоритм

ищет такие целые числа x и y, которые удовлетворяют равенству

n=ab=(x2−y2)=

=(x−y)(x+y).

Таккакa=(x-y),b=(x+y)иa≤b,то(x-y)≤(x+y).Выразимнеизвестные

xиyизсистемы

axy

bxy

x(ba)/2

=>

y(ba)/2

.Действительно,подставляя

значенияxиyввыражение(x2-y2),получим

0.25(ba)20.25(ba)20.25(b22aba2b22aba2)ab,чторавно

n.

Есличислоn-нечетное(таккакпредположительноn-простое),тоего

2сомножителяaиbтакжеявляютсянечетнымичислами.Таккаксуммаиразностьдвухнечетныхчиселявляютсячетными,точисла(a+b)и(a−b)-четные.

Если n является простым числом, то единственными егосомножителямиявляютсячислаa=1иb=n.Тогдаx=(a+b)/2=(n+1)/2и

y=(n−1)/2.

Таккак(x2-y2)=n,тоy2=x2-nили y

x2n.Покажем,чтопри

указанных условиях нацело извлекается квадратный корень, если

x=(n+1)/2:

y x2n

0.25(n1)2n0.5

n22n14n

0.5

n22n10.5

(n1)2

0.5(n1).

Пример1.6.Разложимчислоn=1472861намножители.

Присвоим x=] n[=1213. При этом x2<n, тоесть

12132=1471369<1472861.Увеличимxнаединицу.Данныйпроцессбудет

продолжендотехпор,покачисло y

x2n

нестанетцелымилине

выполнитсяравенство

x(n1).Выражение

2

(n1)

2

равно736431.

Шагиработыалгоритмапредставимввидетрассировочнойтабл.1.6.

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

№шага

x

x(n1)

2

yx2n

yZ?

1

1214

нет

9351/2≈30.57

нет

2

1215

нет

58

да

Навторомшагебылополученоцелоечислоy.Искомымичисламиxиy

являются 1215 и 58. Тогда множителями числа n являются числа

(x−y)=1157и(x+y)=1273.

Дополнительныепримерыдлярешения(решитьобоимиспособами):

1.Разложитечислоn=391на2сомножителя.(n1=17иn2=23).

3.Разложитечислоn=111на2сомножителя.(n1=3иn2=37).

4.Разложитечислоn=115на2сомножителя.(n1=5иn2=23).

5.Рассмотритепримеры1.4-1.6спомощьюалгоритмаФерма.Вопросыдлясамопроверки.

1.ВчемзаключаетсяидеяалгоритмаБухштаба?

2.ВчемзаключаетсяидеяалгоритмаФерма?

3.Какиеобщиеарифметическиеоперацииприсутствуютвобоихалгоритмах?

4.Поясните,длячегоиспользуетсяарифметическаяпрогрессиявалгоритме

Бухштаба?

5.Почему,привыполненииравенствапростое?

x(n1)/2,принимается,чточислоn-

6.Длякакихчиселприменимыалгоритмы?

7.Вкакихдиапазонахищутсярезультатыразложения?