Скачиваний:
0
Добавлен:
18.09.2026
Размер:
793 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,

СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

ФАКУЛЬТЕТ КИБЕРБЕЗОПАСНОСТИ (КБ)

КАФЕДРА ЗАЩИЩЕННЫХ СИСТЕМ СВЯЗИ (ЗСС)

______________________________________________________________________________

Отчет

по лабораторной работе №6

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

Выполнили: студенты группы ИБС-32

Проверил:

доцент кафедры ЗСС к.т.н Кушнир Д.В.

Теоретическая часть

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

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

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

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

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

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

Алгоритм разложения на множители Ферма. Этот алгоритм пытается представить 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

Число: 4733

2) не делиться, т.к. последний элемент не является четной цифрой

3) не делиться, т.к. сумма цифр не является кратной числу 3

4) 4733 mod 4 = 1 => не делиться

5) 4733 mod 5 = 3 => не делиться

6) 4733 mod 6 = 5 => не делиться

7) 4733 mod 7= 1 => не делиться

8) 4733 mod 8 = 5 => не делиться

9) 4733 mod 9 = 8 => не делиться

10) 4733 mod 10 = 3 => не делиться

11) 4733 mod 11 = 3 => не делиться

12) 4733 mod 12 = 5 => не делиться

13) 4733 mod 13 = 1 => не делиться

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

Задание 2

54 x 66 = 3564

2) число делиться, т.к. последняя цифра «4» кратна «2»

3) число делиться, т.к. сумма цифр «18» кратна «3»

4) 3564 mod 4 = 0 => делиться

5) 3564 mod 5 = 4 => не делиться

6) 3564 mod 6 = 0 => делиться

7) 3564 mod 7 = 1 => не делиться

8) 3564 mod 8 = 4 => не делиться

9) 3564 mod 9 = 0 => делиться

10) 3564 mod 10 = 4 => не делиться

Приведенных вычислений достаточно, чтобы продемонстрировать, что число 3564 не являться простым

Задание 3

Варианты 3 и 16 (Ветров М.М. и Подойницын В.Н.)

Напишем программу на языке Python для подсчета множителей ферма:

from math import sqrt n = int(input('Введите число: ')) k = 0 for i in range(2,round(sqrt(n))+1): if n%i==0: k = 1 print(f"Число {n} делится на {i}") break if k!=0: c=0 if i < 25: n = n / i x = round(sqrt(n)) if x**2 == n: print(f"x^2=n\n x = {x}") else: x+=1 while c==0: if x==(n+1)/2: print(f'x=(n+1)/2\n x = {x}') else: y = sqrt(x**2-n) if y.is_integer(): if i < 25: print(f"x = {x}, y = {int(y)}, n = {i}*({int(x+y)})*({int(x-y)})") print(f'Множители Ферма: {int(x+y)} {int(x-y)} {i}') else: print(f"x = {x}, y = {int(y)}, n = ({int(x + y)})*({int(x - y)})") print(f'Множители Ферма: {int(x + y)} {int(x - y)}') c=1 else: print(f"x = {x}, x^2 = {x**2}, x^2-n = {x**2-n}, y ={y}") x+=1

Вариант 3

Для числа 5842265399

Для числа 339726871

Shape3

Вариант 16

Для числа 6070137431

Для числа 491937083

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