Lab_08_IKB-95
.docxФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет Инфокоммуникационных сетей и систем
Кафедра Защищенных систем связи
ОТЧЕТ ПО ЛАБОРТОРНОЙ РАБОТЕ №8
Проверка заданного числа
(тема отчета)
Направление/специальность подготовки
10.03.01 Информационная безопасность
(код и наименование направления/специальности)
Студенты:
(Ф.И.О., № группы) (подпись)
Преподаватель:
Кушнир Д.В.
(уч. степень, уч. звание, Ф.И.О.) (подпись)
Оглавление
Теория…………………………………………………………………………….3
Ход работы……………………………………………………………………….4
Теория
Основная теорема арифметики.
Тест основан на малой теореме Ферма.
Теорема. Если 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 и т.п. Сколько человек в бригаде, столько разных чисел Кармайкла должно быть проверено.
Проверить каждое из этих чисел методом перебора возможных делителей. По желанию возможно использовать предварительную проверку по признакам делимости на 3, 5, 7 и 11. Проверять выбранные числа по признакам делимости можно «вручную» или программно.
Проверить каждое из чисел тестом Ферма. Если задание выполняется в EXCEL, то выбирать k таком образом, чтоб вероятность принять составное за простое была не более 0,125. При полностью программной реализации алгоритма выбирать k таким образом, чтоб вероятность принять составное за простое была не более 10-3.
Ход работы
X = (25+110)*23= 3105
Простые числа – 3119, 3121
Составные числа – 3097, 3113
Число Кармайкла – 1105
Проверка чисел методом перебора возможных делителей.
Число 3119
3119 на 2 не делится – число нечетное 3119 на 3 не делится – сумма цифр не делится на 3 3119 на 4 не делится – число нечетное 3119 на 5 не делится – число не оканчивается на 0 или 5 3119 на 6 не делится – не соблюдаются признаки делимости на 2 и 3 3119 на 7 не делится – разность между числом десятков и удвоенной цифрой единиц не делится на 7 3119 на 8 не делится – число нечетное 3119 на 9 не делится – сумма цифр не делится на 9 3119 на 10 не делится – число не оканчивается на 0 3119 на 11 не делится – разность между суммой цифр, стоящих на четных местах и суммой цифр стоящих на нечетных местах не делится на 11 3119 на 13 не делится – сумма числа десятков с учетверенной цифрой единиц не делится на 13
Число 3121
3121 на 2 не делится – число нечетное 3121 на 3 не делится – сумма цифр не делится на 3 3121 на 4 не делится – число нечетное 3121 на 5 не делится – число не оканчивается на 0 или 5 3121 на 6 не делится – не соблюдаются признаки делимости на 2 и 3 3121 на 7 не делится – разность между числом десятков и удвоенной цифрой единиц не делится на 7 3121 на 8 не делится – число нечетное 3121 на 9 не делится – сумма цифр не делится на 9 3121 на 10 не делится – число не оканчивается на 0 3121 на 11 не делится – разность между суммой цифр, стоящих на четных местах и суммой цифр стоящих на нечетных местах не делится на 11 3121 на 13 не делится – сумма числа десятков с учетверенной цифрой единиц не делится на 13
Число 3097
3097 на 2 не делится – число нечетное 3097 на 3 не делится – сумма цифр не делится на 3 3097 на 4 не делится – число нечетное 3097 на 5 не делится – число не оканчивается на 0 или 5 3097 на 6 не делится – не соблюдаются признаки делимости на 2 и 3 3097 на 7 не делится – разность между числом десятков и удвоенной цифрой единиц не делится на 7 3097 на 8 не делится – число нечетное 3097 на 9 не делится – сумма цифр не делится на 9 3097 на 10 не делится – число не оканчивается на 0 3097 на 11 не делится – разность между суммой цифр, стоящих на четных местах и суммой цифр стоящих на нечетных местах не делится на 11 3097 на 13 не делится – сумма числа десятков с учетверенной цифрой единиц не делится на 13
Число 3113 3113 на 2 не делится – число нечетное 3113 на 3 не делится – сумма цифр не делится на 3 3113 на 4 не делится – число нечетное 3113 на 5 не делится – число не оканчивается на 0 или 5 3113 на 6 не делится – не соблюдаются признаки делимости на 2 и 3 3113 на 7 не делится – разность между числом десятков и удвоенной цифрой единиц не делится на 7 3113 на 8 не делится – число нечетное 3113 на 9 не делится – сумма цифр не делится на 9 3113 на 10 не делится – число не оканчивается на 0 3113 : 11 = 283 3113 на 13 не делится – сумма числа десятков с учетверенной цифрой единиц не делится на 13 Число 1105 1105 на 2 не делится – число нечетное 1105 на 3 не делится – сумма цифр не делится на 3 1105 на 4 не делится – число нечетное 1105 : 5 = 221 1105 на 6 не делится – не соблюдаются признаки делимости на 2 и 3 1105 на 7 не делится – разность между числом десятков и удвоенной цифрой единиц не делится на 7 1105 на 8 не делится – число нечетное 1105 на 9 не делится – сумма цифр не делится на 9 1105 на 10 не делится – число не оканчивается на 0 1105 : 11 = 5749 1105 : 13 = 85
Тест Ферма
Число 3119
НОД (3119; 2) = 1 НОД (3119; 3) = 1 НОД (3119; 5) = 1 НОД (3119; 7) = 1 НОД (3119; 11) = 1 НОД (3119; 13) = 1
(2^3118) mod 3119 = 1 (3^3118) mod 3119 = 1 (5^3118) mod 3119 = 1 (7^3118) mod 3119 = 1 (11^3118) mod 3119 = 1 (13^3118) mod 3119 = 1
Число 3119 – простое, с итоговой вероятностью, что мы приняли составное число за простое равное: (½)6
Число 3121 НОД (3121; 2) = 1 НОД (3121; 3) = 1 НОД (3121; 5) = 1 НОД (3121; 7) = 1 НОД (3121; 11) = 1 НОД (3121; 13) = 1
(2^3120) mod 3121 = 1 (3^3120) mod 3121 = 1 (5^3120) mod 3121 = 1 (7^3120) mod 3121 = 1 (11^3120) mod 3121 = 1 (13^3120) mod 3121 = 1
Число 3121 – простое, с итоговой вероятностью, что мы приняли составное число за простое равное: (½)6
Число 3097 НОД (3097; 2) = 1 НОД (3097; 3) = 1 НОД (3097; 5) = 1 НОД (3097; 7) = 1 НОД (3097; 11) = 1 НОД (3097; 13) = 1 НОД (3097; 17) = 1 НОД (3097; 19) = 19
Вывод: число 3097 – составное.
Число 3113 НОД (3113; 2) = 1 НОД (3113; 3) = 1 НОД (3113; 5) = 1 НОД (3113; 7) = 1 НОД (3113; 11) = 11
Вывод: число 3113 – составное.
Число 1105 НОД (1105; 2) = 1 НОД (1105; 3) = 1 НОД (1105; 5) = 5
Вывод: число 1105 – составное.
Санкт-Петербург
2021