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

Лекция5

Алгоритмыфакторизации

Разложениечиселна2простыхсомножителя

ПустьN-множествонатуральныхчиселивсеоперациипроизводятся

надцелымичислами.Формула

ir,k

будетопределятьрядцелыхчисел,

лежащихвдиапазонеотrдоkвключительно,значенияизкоторогоможетприниматьпеременнаяi.]k[-взятиеотдробногочислаkтолькоцелойчасти,

безокругления.

АлгоритмБухштаба

ДанныйалгоритмприведенизкнигиБухштабаА.А."Теориячисел"[4].Пустьзаданонатуральноенечетноечислоn,n≥9,котороенеобходиморазложитьна2простыхсомножителя.ЗададимрядчиселNs(s-нульинатуральноечисло),гденакаждомшагекNsприбавляютсячиславпорядке

возрастания:длявычисленияNsкNs1прибавляетсячисло(2s-1).

ТогдаитеративновычислимэлементыNsпоформулеNs=Ns-1+2s-1:

N0=n

N1=N0+1

N2=N1+3

N3=N2+5

……

Ns=Ns-1+2s-1

……

Прибавляемые к Ns числа являются членами арифметическойпрогрессии:

-начальныйэлементравенa0=1,

-последний-as=2s-1,

-числочленов-m=s

-шагпрогрессииравен2.

Тогдасуммачиселприбавленныхкавна(поформулесуммыарифметическойпрогрессии)Sпрогрес=(a1+as)m/2=(1+2s-1)s/2=2s2/2=s2.

ВрезультатеэлементNsравенNs=N0+Sпрогрес=n+Sпрогрес=n+s2.

Предположим,чтоизNsизвлекаетсянацелоквадратныйкорень,тоестьNs=t2,гдеt-некотороенатуральноечисло,тогдаNs=t2=n+s2n=Nss2=t2s2.

Такимобразом,еслипринекоторомsбудетвозможноизвлечениенацелоквадратногокорняизNs=t2,тоисходноечислоаскладываетсякак

n=(t2s2)=(ts)(t+s).

n9 2 2

Есливдиапазонедляs:1s 6

небудетнайденоt,гдеизt

нацелоизвлекаетсяквадратныйкорень,топроцесспоискадвухсомножителейчислаавершается-числоnявляетсяпростымилиалгоритмнеприменимдлянего.

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

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

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

1.Вводчислаn.Еслиn<9,тозадачаданнымалгоритмомнерешается.Выход.

2.N=n.

n9

3.Дляs1,

6

выполнить:

3.а.N=N+2s-1.

3.б.t]N[.

3.в.Еслиt2=N,то

выводчисел(t-s)и(t+s);Выходизалгоритма.

4.Разложитьчислоnнеудалось.Выходизалгоритма.

Пример1.4.Пустьn=69.

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

Шаг,s

n9

Условие:s 6 ?

N=N+2s-1

t]N[

2

Условие:t=N?

1

да:1≤10

70

8

нет:64≠70

2

да:2≤10

73

8

нет:64≠73

3

да:3≤10

78

8

нет:64≠78

4

да:4≤10

85

9

нет:81≠85

5

да:5≤10

94

9

нет:81≠94

6

да:6≤10

105

10

нет:100≠105

7

да:7≤10

118

10

нет:100≠118

8

да:8≤10

133

11

нет:121≠133

9

да:9≤10

150

12

нет:144≠150

10

да:10≤10

169

13

да:169=169

n9

N0=n=69;максимальноечислошагов:

s 6

10.Шагиработы

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

ИзчислаN10=169можноизвлечьквадратныйкорень:t2=13.Тогда

n=(t2s2)=(t−s)?(t+s)=(13-10)?(13+10)=3?23.

Т.е.число69раскладываетсянадвачисла:3и23.

Пример1.5.Пустьn=23.

n9

N0=n=23;максимальноечислошагов:s≤ 6

=2.

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

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

Шаг,s

n9

Условие:s ?

6

N=N+2s-1

t]N[

Условие:t2=N?

1

да:1≤2

24

4

Нет:16≠24

2

да:2≤2

27

5

Нет:25≠27

3

нет:3>2

-

-

-

Такимобразом,число23нераскладываетсяалгоритмомБухштабана2

простыхсомножителя.