Скачиваний:
3
Добавлен:
14.06.2023
Размер:
27.82 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«Санкт-Петербургский государственный университет телекоммуникаций

им. проф. М.А. Бонч-Бруевича»

(СПБГУТ)

__________________________________________________________________

Факультет ИКСС

Кафедра ЗСС

Отчет к лабораторной работе № 6 по дисциплине:

«Математические основы защиты информации»

Тема: «Алгоритмы разложения на множители»

Выполнил студент Группа ИКБ-14:

Травкина Е. А.

Проверил:

Кушнир Д.В.

г. Санкт-Петербург

2023

Алгоритмы разложения на множители.

Основная теорема арифметики.

Всякое целое число n > 1 единственным образом может быть представлено в виде:

,

где p1,p2,…,pk – простые, (1<p1<p2<…<pk), e1,e2,…,ek-натуральные числа.

Замечание, если число делится нацело только на 1 и на себя, то такое число простое.

  1. Алгоритм разложения на множители методом «перебора».

Последовательно выполняем деление исследуемого числа n на числа: 2,3,4,5,6,7,8… - самостоятельно определить (просмотреть лекционный материал по предыдущим темам) до какого числа достаточно производить такое деление. При выполнении деления можно учитывать признаки делимости на различные числа (2,3,4,5,…) для сокращения числа операций.

  1. Алгоритм разложения на множители Ферма. Этот алгоритм пытается представить n как разность квадратов двух чисел, т е. в виде n=x2-y2, тогда n раскладывается на (x-y)*(x+y). Алгоритм достаточно эффективен при близких сомножителях.

Шаг1. Принять x=[sqrt(n)], если n=x2 , то x делитель – окончание алгоритма, иначе x=x+1 ([ … ]- обозначает взять целое). Шаг2. Если x=(n+1)/2 – n простое – окончание алгоритма, иначе вычисляем y=sqrt(x2-n). Шаг3. Если y целое, т.е. y2=x2-n,то решение найдено (n=(x+y)*(x-y)), иначе x=x+1 и переходим к шагу 2.

Пример n=1342127

x

x2

x2-n

y=sqrt(x2-n)

1158

1340964

-1163

1159

1343281

1154

33,97058

1160

1345600

3473

58,93216

1161

1347921

5794

76,11833

1162

1350244

8117

90,09439

1163

1352569

10442

102,1861

1164

1354896

12769

113

Т.е. x=1164, y=113. n=(1164+113)*(1164-113)=1277*1051

Задание.

  1. Выполнить попытку разложения на множители любого четырёхзначного простого числа (взять любое из таблиц простых чисел) методом перебора. В отчёте показать вывод остатков от деления на каждом шаге алгоритма. Указать признак остановки алгоритма. Для оптимизации перебора можно использовать признаки делимости (по желанию). Привести примеры признаков делимости на (2,3,4,5,6, можно добавить по желанию еще какие-нибудь).

Число 2503

Делимость на:

2 – не делится, т.к. число нечетное.

3 – не делится (сумма цифр не делится на 3)

4 – не делится, т.к. последние две цифры числа не делятся на 4

5 – не делится (2503 не оканчивается на 0 или 5)

6 – не делится (не выполняются признаки делимости на 2 и 3)

7 – не делится (разность между числом десятков и удвоенным числом единиц не делится на 7)

8 – не делится, т.к. число нечетное.

9 – не делится (сумма цифр не делится на 9).

10 – не делится (число не оканчивается на 0).

11 – не делится (разность между суммой цифр, стоящих на четных местах, и суммой цифр, стоящих на нечетных местах, не делится на 11)

12 – не делится (сумма цифр не делится на 3, сумма последних двух цифр не нечетна)

Дальнейший перебор не имеет смысла, так как мы провели достаточно операций, чтобы показать, что число не имеет делителей от 1 до 10 и не является произведением простых чисел.

  1. Выполнить аналогичные действия для любого числа, которое является произведением двух двухзначных (больших 50-ти) простых чисел (по Вашему выбору).

89*97 = 8633

Число 8633 Делимость на:

2 – не делится, т.к. число нечетное.

3 – не делится (сумма цифр 20 не делится на 3)

4 – не делится, т.к. последние две цифры числа 33 не делятся на 4

5 – не делится (8633 не оканчивается на 0 или 5)

6 – не делится (не выполняются признаки делимости на 2 и 3)

7 – не делится (разность между числом десятков 863 и удвоенным числом единиц 6 равна 857 и не делится на 7)

8 – не делится, т.к. число нечетное.

9 – не делится (сумма цифр 20 не делится на 9).

10 – не делится (число не оканчивается на 0).

11 – не делится (разность между суммой цифр, стоящих на четных местах, и суммой цифр, стоящих на нечетных местах, не делится на 11)

12 – не делится (сумма цифр не делится на 3, сумма последних двух цифр не нечетна)

Число не будет являться простым, так как мы знаем, что 89 и 97 будут являться его множителями.

  1. Разложить на множители (факторизовать), два числа из таблицы ниже, вариант выбирать по номеру студента в группе. Если в бригаде несколько человек, то необходимо факторизовать соответствующее количество чисел. Использовать алгоритм Ферма. Обратите внимание на примечание.

Вариант 23(3)

n = 5842265399

x

x2

x2-n

y=sqrt(x2-n)

76434

5842156356

-109043

76435

5842309225

43826

209,3466

76436

5842462096

196697

443,5054

76437

5842614969

349570

591,2445

76438

5842767844

502445

708,8335

76439

5842920721

655322

809,5196

76440

5843073600

808201

899



Т.е. x=764400, y=899. n = (764400+899)*(764400-899)=765299*763501

n = 6142785497

x

x2

x2-n

y=sqrt(x2-n)

78375

6142483876

-301621

78376

6142797376

11879

108,9908253

78377

6142954129

168632

410,648268

78378

6143110884

325387

570,427033

78379

6143267641

482144

694,3658978

78380

6143424400

638903

799,3140809

78381

6143581161

795664

892



Т.е. x=78381, y=892. n = (78381+892)*( 78381-892)=79273*77489

Соседние файлы в предмете Математические основы защиты информации