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

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

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

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

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

(СПбГУТ)

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

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

______________________________________________________________________________

Отчет

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

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

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

Проверил:

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

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

Согласно китайской теореме об остатках, система уравнений:

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.

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

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 по определению обратного элемента, т.е. получаем:

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 можно брать и отрицательные числа, что необходимо для решения некоторых задач).

Типичные задачи, которые можно решить на основе подобных подходов:

Задача 1: Как часто стрелки часов (секундная, минутная, часовая) сходятся вместе.

Задача 2: В какие моменты времени несколько спутников с разным периодом обращения вокруг Земли будут одновременно пересекать заданную долготу.

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

Решение на основе Китайской теореме об остатках:

Практическая часть

Задача 1

Для упрощения перебора напишем программу на языке питон:

per_r = int(input('первый ряд: ')) vtr_r = int(input('второй ряд: ')) tre_r = int(input('третий ряд: ')) ryad1, ryad2, ryad3 = [], [], [] for i in range(1, 106): if i%3 == per_r: ryad1.append(str(i)) for i in range(1, 106): if i%5 == vtr_r: ryad2.append(str(i)) for i in range(1, 106): if i%7 == tre_r: ryad3.append(str(i)) print(ryad1,ryad2,ryad3, sep='\n') for i in ryad1: for j in ryad2: for k in ryad3: if i==j and i==k and j==k: print('общий элемент: ', i)

Вариант 3

Лишние кубики 0, 2, 4

Имеем:

Первый ряд:

['3', '6', '9', '12', '15', '18', '21', '24', '27', '30', '33', '36', '39', '42', '45', '48', '51', '54', '57', '60', '63', '66', '69', '72', '75', '78', '81', '84', '87', '90', '93', '96', '99', '102', '105']

Второй ряд

['2', '7', '12', '17', '22', '27', '32', '37', '42', '47', '52', '57', '62', '67', '72', '77', '82', '87', '92', '97', '102']

Третий ряд:

['4', '11', '18', '25', '32', '39', '46', '53', '60', '67', '74', '81', '88', '95', '102']

общий элемент: 102

Вариант 16

Лишние кубики 2, 0, 5

Первый ряд

['2', '5', '8', '11', '14', '17', '20', '23', '26', '29', '32', '35', '38', '41', '44', '47', '50', '53', '56', '59', '62', '65', '68', '71', '74', '77', '80', '83', '86', '89', '92', '95', '98', '101', '104']

Второй ряд

['5', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55', '60', '65', '70', '75', '80', '85', '90', '95', '100', '105']

Третий ряд

['5', '12', '19', '26', '33', '40', '47', '54', '61', '68', '75', '82', '89', '96', '103']

общий элемент: 5

Задача 2

Вариант 3 (аналитический способ)

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

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

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

x = 2 (mod 3)

x = 3 (mod 5)

x = 4 (mod 8)

x = 2 + 3*t

2+3t = 3 mod 5

3t = 1 mod 5

t = 3-1 mod 5

t = 2 mod 5

t = 2 + 5*u

x = 2 + 3t = 2 + 3(2 + 5u) = 8 + 15u

8 + 15u = 4 mod 8

15u = -4 mod 8

15u = 4 mod 8

u = 7 * 4 mod 8

u = 4 mod 8

u = 4 + 8v

x = 8 + 15u = 8 + 15(4+8v) = 68 + 120v

Таким образом, решение на промежутке [0..3*5*8] = 68 (Все три спутника пролетят над городом через 68 часов)

Вариант 3 (Китайская теорема)

x = 2 (mod 3)

x = 3 (mod 5)

x = 4 (mod 8)

  1. M = 3*5*8 = 120

  2. M1 = 120/3 = 40, M2 = 120/5 = 24, M3 = 120/8 = 15

  3. N1 = 1, N2 = 4, N3 = 7

  4. x = 2*40*1 + 24*4*3 + 15*7*4 = 68 mod 120

Через 68 часов спутники пересекутся

Вариант 16 (Китайская теорема)

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

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

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

x = 1 (mod 7)

x = 2 (mod 5)

x = 3 (mod 9)

  1. M = 7*5*9 = 315

  2. M1 = 315/7 = 45, M2 = 315/5 = 63, M3 = 315/9 = 35

  3. N1 = 3, N2 = 3, N3 = 8

  4. x = 1*45*3 + 2*63*3 + 3*35*8 = 93 mod 315

Через 93 часа спутники пересекутся

9

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