
Лабораторная работа №10
.pdf
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)
Факультет Инфокоммуникационных сетей и систем
Кафедра Защищенных систем связи
Дисциплина Математические основы защиты информации
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №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