Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №10

.pdf
Скачиваний:
3
Добавлен:
10.08.2024
Размер:
589.81 Кб
Скачать

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

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

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

Факультет Инфокоммуникационных сетей и систем

Кафедра Защищенных систем связи

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

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №10

Китайская теорема об остатках

(тема отчета)

Информационная безопасность (10.03.01)

(код и наименование направления/специальности)

Студент:

 

 

 

Ерохин А.Г.

ИКБ-03

(Ф.И.О.)

 

 

(подпись)

Студент:

 

 

 

Чистяков А.С.

ИКБ-03

(Ф.И.О.)

 

 

(подпись)

Студент:

Пантюхин М.А. ИКБ-03

(Ф.И.О.) (подпись)

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

(Ф.И.О.) (подпись)

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

2022

Часть 1. Китайская теорема об остатках (метод перебора)

Согласно китайской теореме об остатках система уравнений: x= 1 mod 2

x= 2 mod 3 x= 6 mod 7

Имеет единственное решение на промежутке [0... 2*3*7], если числа 2,3,7 — взаимно простые.

Найдем решение на промежутке от 0 до 42 (перебором):

Решения первого уравнения: 1,3,5,7,9,11,...37,39,41, ...

Решения второго уравнения: 2,5,8,11,...38,41,...

Решения третьего уравнения: 6,13,20,27,34,41,...

Итоговое решение x=41.

Задача 1.

Имеется не более 105 кубиков. Их поочерёдно располагают по 3, по 5 или по 7 в ряд. Последний ряд в некоторых случаях оказывается заполненным не полностью (несколько кубиков оказываются «лишними»). По количеству «лишних» кубиков определить их общее количество.

 

Остаток кубиков при раскладывании:

Варианты

в ряд по 3

в ряд по 5

в ряд по 7

7

2

1

6

17

2

1

4

24 (4)

1

3

3

Вариант 7.

Согласно китайской теореме об остатках система уравнений: x= 2 mod 3

x= 1 mod 5 x= 6 mod 7

Числа 3, 5, 7 – взаимно простые, следовательно решение находится в промежутке от 0 до 3*5*7, т.е. о 0 до 105

Найдем решение на промежутке от 0 до 105 (перебором):

Итоговое решение: x = 41

2

Вариант 17.

Согласно китайской теореме об остатках система уравнений: x= 2 mod 3

x= 1 mod 5 x= 4 mod 7

Числа 3, 5, 7 – взаимно простые, следовательно решение находится в промежутке от 0 до 3*5*7, т.е. о 0 до 105

Найдем решение на промежутке от 0 до 105 (перебором):

Итоговое решение: x = 11

Вариант 24(4).

Согласно китайской теореме об остатках система уравнений: x= 1 mod 3

x= 3 mod 5 x= 3 mod 7

Числа 3, 5, 7 – взаимно простые, следовательно решение находится в промежутке от 0 до 3*5*7, т.е. о 0 до 105

Найдем решение на промежутке от 0 до 105 (перебором):

Итоговое решение: x = 73

Для выполнения задания 1 была написана программа на языке программирования C++.

3

Листинг:

#include <iostream> using namespace std; int main(){

setlocale(LC_ALL, "Rus");

int size_a = 0, size_b = 0, size_c = 0; int a[105];

cin >> a[0]; int b[105]; cin >> b[0]; int c[105]; cin >> c[0];

cout << "Решение первого уравнения: "; cout << a[0] << ", ";

for (int i = 1; i < 105; i++) { a[i] = a[i - 1] + 3;

if (a[i] > 105) { break;

}

size_a++;

cout << a[i] << ", ";

}

cout << endl; cout << "Решение второго уравнения: " << b[0] << ", "; for (int i = 1; i < 105; i++) {

b[i] = b[i - 1] + 5; if (b[i] > 105) {

break;

}

size_b++;

cout << b[i] << ", ";

}

cout << endl; cout << "Решение третьего уравнения: " << c[0] << ", "; for (int i = 1; i < 105; i++) {

c[i] = c[i - 1] + 7; if (c[i] > 105) {

break;

}

size_c++;

cout << c[i] << ", ";

}

cout << endl; cout << endl; for (int i = 0; i < size_a; i++){

for (int j = 0; j < size_b; j++){ for (int l = 0; l < size_c; l++) {

if ((a[i] == b[j]) && (a[i] == c[l])) {

cout << "Итоговое решение: x = " << a[i];

}

}

}

}

}

4

Часть 2. Китайская теорема об остатках (аналитический метод)

Найдём аналитически решение системы уравнений: x=1 mod 13

x=4 mod 15 x=8 mod 19

Выразим x из первого уравнения:

Выражение x=1 mod 13, можно записать в виде: x=1+13*t, где t - некоторое произвольное целое.

Подставляем выражение для x из первого уравнения во второе уравнение:

x= 4 mod 15 1+13t = 4 mod 15 13t = 3 mod 15

t= 3/13 mod15

Вмодульной арифметике "нет такого понятия как деление", вместо деления необходимо производить умножение на обратный элемент.

t= 3*(13)^(-1) mod15

Обратный элемент находят с помощью расширенного алгоритма Эвклида, для небольших чисел в демонстрационных целях можно использовать метод перебора на основе определения обратного элемента:

1*13=13 mod 15 2*13=11 mod 15 3*13= 9 mod 15 4*13= 7 mod 15 5*13= 5 mod 15 6*13= 3 mod 15 7*13= 1 mod 15

...

т.е.

t = 3*(13)(-1) =3*7 mod 15 t = 6 mod 15

раскроем модуль:

t = 6 + 15*u, где u - целое число.

теперь подставим это в выражение для х: x = 1+13t = 1 + 13(6 + 15u) = 79 + 195u

(таким образом, мы получили выражение для «х» с учетом двух уравнений). Подставим найденное выражение для х в третье уравнение:

79+195u=8 mod19 5u=5mod19

u=5/5mod19 (тут можно было бы тоже не делить на 5, а умножать на обратное к 5 число, но выражение запись 5*5(-1)mod 19 всегда равно 1 по определению обратного элемента, т.е. получаем:

5

u = 1 mod 19

раскрываем модуль:

u = 1 + 19v, где v - целое число. Подставляем в выражение для х Итого с учетом всех трёх уравнений:

x = 79 + 195u = 79 + 195*(1 + 19v) = 274+3705v

Решение на промежутке [0 ... 13*15*19]=274, но есть и другие решения системы, вне промежутка, которые можно получить, принимая в качестве v значения 0, 1, 2, 3, …, …, …, … (В качестве v можно брать и отрицательные числа, что необходимо для решения некоторых задач).

Задача 2

1.Спутник1 пролетает над городом в x1 час и имеет период обращения y1 часов.

2.Спутник2 пролетает над городом в x2 час и имеет период обращения y2 часов.

3.Спутник3 пролетает над городом в x3 час и имеет период обращения y3 часов.

Варианты

x1

x2

x3

y1

y2

y3

7

3

3

1

5

6

7

17

4

3

1

5

7

3

24(4)

1

2

4

3

2

5

Вариант 7.

Согласно китайской теореме об остатках система уравнений: x= 3 mod 5

x= 3 mod 6 x= 1 mod 7

1.x = 3 + 5*t

2.x= 3 mod 6

3 + 5*t = 3 mod 6

5*t = 0 mod 6

t = 0*(5)-1 mod 6 = 0 mod 6 t = 0 + 6*v = 6*v

3.x = 3 + 5*t = 3 + 5*(6*v) = 3 + 30*v

4.x = 1 mod 7

3 + 30*v = 1 mod 7

30*v = 5 mod 7

v = 5*(30)-1 mod 7

v = 5*4 mod 7 = 20 mod 7 = 6 mod 7 = 6 + 7*u

5. x = 3 + 5*t = 3 + 5*(6*v) = 3 + 30*v = 3 + 30*(6 + 7*u) = 183 + 210*u

Ответ: Все спутники пролетят одновременно через 183 часа, и это событие будет происходить каждые 210 часов.

6

Вариант 17.

Согласно китайской теореме об остатках система уравнений: x= 4 mod 5

x= 3 mod 7 x= 1 mod 3

1.x = 4 + 5*t

2.x= 3 mod 7

4 + 5*t = 3 mod 7

5*t = 6 mod 7

t = 6*(5)-1 mod 7

t = 6*3 mod 7 = 18 mod 7 = 4 mod 7 = 4 + 7*v t = 4 + 7*v

3.x = 4 + 5*t = 4 + 5*(4 + 7*v) = 24 + 35*v

4.x = 1 mod 3

24 + 35*v = 1 mod 3

35*v = -23 mod 3 = 1 mod 3 v = 1*(35)-1 mod 3

v = 1*2 mod 3 = 2 mod 3 = 2 + 3*u

5. x = 4 + 5*t = 24 + 35*v = 24 + 35*(2 + 3*u) = 94 + 105*u

Ответ: Все спутники пролетят одновременно через 94 часа, и это событие будет происходить каждые 105 часов.

Вариант 24(4).

Согласно китайской теореме об остатках система уравнений: x= 1 mod 3

x= 2 mod 2 = 0 mod 2 x= 4 mod 5

1.x = 1 + 3*t

2.x= 0 mod 2

1 + 3*t = 0 mod 2

3*t = 1 mod 2

t = 1*(3)-1 mod 2

t = 1*3 mod 2 = 1 mod 2 = 1 + 2*v t = 1 + 2*v

3.x = 1 + 3*t = 1 + 3*(1 + 2*v) = 4 + 6*v

4.x = 4 mod 5

4 + 6*v = 4 mod 5

6*v = 0 mod 5

v = 0*(6)-1 mod 5

v = 0 mod 5 = 5*u

5. x = 1 + 3*t = 4 + 6*v = 4 + 6*(5*u) = 4 + 30*u

Ответ: Все спутники пролетят одновременно через 4 часа, и это событие будет происходить каждые 30 часов.

7

Часть 3. Решение на основе Китайской теореме об остатках

Задача 3

1.Спутник1 пролетает над городом в x1 час и имеет период обращения y1 часов.

2.Спутник2 пролетает над городом в x2 час и имеет период обращения y2 часов.

3.Спутник3 пролетает над городом в x3 час и имеет период обращения y3 часов.

8

Варианты

x1

x2

x3

y1

y2

y3

7

3

3

1

5

6

7

17

4

3

1

5

7

3

24(4)

1

2

4

3

2

5

Вариант 7.

Согласно китайской теореме об остатках система уравнений: x= 3 mod 5

x= 3 mod 6 x= 1 mod 7

1.M = 5*6*7 = 210

2.M1 = 210/5 = 42; M2 = 210/6 = 35; M3 = 210/7 = 30

3.(M1)-1 = 3; (M2)-1 = 5; (M3)-1 = 4

4.x = 3*42*3 + 3*35*5 + 1*30*4 = 1023 mod 210 = 183 mod 210

Ответ: Все спутники пролетят одновременно через 183 часа, и это событие будет происходить каждые 210 часов.

Вариант 17.

Согласно китайской теореме об остатках система уравнений: x= 4 mod 5

x= 3 mod 7 x= 1 mod 3

1.M = 5*7*3 = 105

2.M1 = 105/5 = 21; M2 = 105/7 = 15; M3 = 105/3 = 35

3.(M1)-1 = 1; (M2)-1 = 1; (M3)-1 = 2

4.x = 4*21*1 + 3*15*1 + 1*35*2 = 199 mod 105 = 94 mod 105

Ответ: Все спутники пролетят одновременно через 94 часа, и это событие будет происходить каждые 105 часов.

Вариант 24(4).

Согласно китайской теореме об остатках система уравнений: x= 1 mod 3

x= 2 mod 2 = 0 mod 2 x= 4 mod 5

1.M = 3*2*5 = 30

2.M1 = 30/3 = 10; M2 = 30/2 = 15; M3 = 30/5 = 6

3.(M1)-1 = 1; (M2)-1 = 2; (M3)-1 = 1

4.x = 1*10*1 + 2*15*2 + 4*6*1 = 94 mod 30 = 4 mod 30

Ответ: Все спутники пролетят одновременно через 4 часа, и это событие будет происходить каждые 30 часов.

9