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

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

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

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

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

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

(СПБГУТ)

__________________________________________________________________

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

Кафедра ЗСС

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

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

Тема: «Проверка заданного числа (простое или составное). Тест Ферма»

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

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

Проверил:

Кушнир Д.В.

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

2023

Лабораторная/Практика. Проверка заданного числа (простое или составное)

Метод 1. Проверка числа методом перебора возможных делителей. Возможна некоторая оптимизация с проверкой числа с помощью признаков делимости.

Всякое целое число 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.

Метод 2. Тест Ферма

Тест основан на малой теореме Ферма.

Теорема. Если n-простое и НОД(a, n) = 1, то an-1 = 1 mod n.

Вывод – если n составное, то соотношения из малой теоремы Ферма не всегда будут выполняться. Можно показать, что в среднем для составных чисел соотношения из малой теоремы Ферма выполняются с вероятностью ½.

Алгоритм тестирования числа n.

Выбираем количество тестов – k (это определит вероятность ошибочно принять составное число за простое). Выбираем k случайных чисел a: a1, a2, …, ak < n (обычно выбирают малые простые числа).

Для каждого ai вычисляем НОД(ai ,n), если «n» простое, то всегда должна быть 1. Если любое из НОД(ai ,n)≠1, то тест заканчивается с выводом, что «n» составное.

Если проверки пройдены, то для каждого ai проверяем: ai(n-1) = 1 mod n. Если любое из ai(n-1) ≠ 1 mod n, то тест заканчивается с выводом, что «n» составное.

Если все проверки пройдены, то принимаем решение, что n – простое, с итоговой вероятностью, что мы могли принять составное число за простое равное: (½)k.

Некоторые составные числа всегда удовлетворяют условиям теоремы Ферма, так называемые числа Кармайкла. Выполняя тест Ферма узнать, что число Кармайкла составное, можно только на этапе проверки НОД (ai, n) ≠ 1, если «повезло» «удачно» выбрать ai.

Задание

Выбрать два простых и два составных нечетных числа (не кратных 3, 5 и 7) и еще одно составное число Кармайкла. Выбирать числа для выполнения задания по следующей формуле: 1. Вычисляем: X=((№ студента в группе)+110)*23. Далее произвольно в диапазоне X±20 выбрать нужные числа (если в бригаде один студент, то проверяем 4-ые числа, если два, то 8, если три, то 12). Число Кармайкла выбирать по следующему алгоритму: студент в группе с номером 1. Берёт число 1105 студент в группе с номером 2. Берёт число 1729 студент в группе с номером 3. Берёт число 2465 студент в группе с номером 4. Берёт число 2821 студент в группе с номером 5. Берёт число 6601 студент в группе с номером 6. Берёт число 8911 для студентов с большими номерами выбирать число Кармайкла циклически, 7-й берёт опять число 1105 и т.п. Сколько человек в бригаде, столько разных чисел Кармайкла должно быть проверено.

  1. Проверить каждое из этих чисел методом перебора возможных делителей. По желанию возможно использовать предварительную проверку по признакам делимости на 3, 5, 7 и 11. Проверять выбранные числа по признакам делимости можно «вручную» или программно.

  1. Проверить каждое из чисел тестом Ферма. Если задание выполняется в EXCEL, то выбирать k таком образом, чтоб вероятность принять составное за простое была не более 0,125. При полностью программной реализации алгоритма выбирать k таким образом, чтоб вероятность принять составное за простое была не более 10-3.

Номер студента 23(5)

X = ((23)+110)*23 = 3059

Простые +- 20 от Х: 3049, 3061

Составные +- 20 от Х: 3053, 3071

Число Кармайкла = 6601

Ход работы:

1)Проверка чисел методом перебора возможных делителей.

Число 3049 делимость на:

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

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

4 не делится – число нечетное

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

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

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

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

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

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

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

13 не делится – сумма числа десятков с учетверенной цифрой единиц не делится на 13

Число 3061 делимость на:

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

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

4 не делится – число нечетное

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

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

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

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

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

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

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

13 не делится – сумма числа десятков с учетверенной цифрой единиц не делится на 13

Число 3053 делимость на:

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

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

4 не делится – число нечетное

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

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

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

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

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

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

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

13 не делится – сумма числа десятков с учетверенной цифрой единиц не делится на 13

Делители: 1 43 71 3053

Число 3171 делимость на:

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

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

4 не делится – число нечетное

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

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

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

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

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

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

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

13 не делится – сумма числа десятков с учетверенной цифрой единиц не делится на 13

Делители: 1 37 83 3071

2)Тест Ферма.

Число 3049

НОД (3049; 2) = 1 НОД (3049; 3) = 1 НОД (3049; 5) = 1 НОД (3049; 7) = 1 НОД (3049; 11) = 1 НОД (3049; 13) = 1

(2^3048) mod 3049 = 1 (3^3048) mod 3049 = 1 (5^3048) mod 3049 = 1 (7^3048) mod 3049 = 1 (11^3048) mod 3049 = 1 (13^3048) mod 3049 = 1

Ответ: Число 3049 – простое, с итоговой вероятностью, что мы приняли составное число за простое равное: (½)6

Число 3061

НОД (3061; 2) = 1 НОД (3061; 3) = 1 НОД (3061; 5) = 1 НОД (3061; 7) = 1 НОД (3061; 11) = 1 НОД (3061; 13) = 1

(2^3060) mod 3061 = 1 (3^3060) mod 3061 = 1 (5^3060) mod 3061 = 1 (7^3060) mod 3061 = 1 (11^3060) mod 3061 = 1 (13^3060) mod 3061 = 1

Ответ: Число 3061 – простое, с итоговой вероятностью, что мы приняли составное число за простое равное: (½)6

Число 3053

НОД (3053; 2) = 1 НОД (3053; 3) = 1 НОД (3053; 5) = 1 НОД (3053; 7) = 1 НОД (3053; 11) = 1 НОД (3053; 13) = 1 НОД (3053; 17) = 1 …. НОД (3053; 43) = 71

Ответ: Число 3053 – составное.

Число 3071

НОД (3071; 2) = 1 НОД (3071; 3) = 1 НОД (3071; 5) = 1 НОД (3071; 7) = 1 НОД (3071; 11) = 1 НОД (3071; 13) = 1 …. НОД (3071; 37) = 83

Ответ: Число 3071– составное.

Число 6601

НОД (6601; 2) = 1 НОД (6601; 3) = 1 НОД (6601; 5) = 1 НОД (6601; 7) = 943

Ответ: Число 6601 – составное.

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