You are on page 1of 3

ЛАБОРАТОРНА РОБОТА №1

Тема: Математична основа методів криптографії


Ціль: - познайомити студентів з елементами модульної арифметики;
- розкрити методику рішення задач
Час: 2 год.

1.1 Виконання роботи


- Розглянути теоретичні відомості.
- Виконати самостійну роботу.

1.2 Теоретичні відомості


У більшості існуючих алгоритмів шифрування найчастіше виникає ціла
низка завдань, які потребують вирішення. До таких завдань можна віднести:
рекомендації щодо вибору розмірів блоку даних та ключів, робота з числами
великої розрядності, алгоритми вироблення простих чисел, знаходження
найбільшого загального дільника, зведення числа у велику міру, робота з
негативними числами тощо. Тому найважливіші з цих завдань і будуть
розглянуті в цьому розділі.

Ділення із залишком
Розділити ціле число a на натуральне число із залишком
означає подати його у вигляді:

При цьому q називається неповною часткою, а r - залишком від ділення a


на
Наприклад, при діленні із залишком a = 78 на b = 33 отримуємо неповну
частку q=2 і залишок r=12:

Позначення операції взяття залишку у різних мовах програмування


представлені у таблиці 1.
Таблиця 1

Мова Оператор Знак результату

Си (ISO
% Ділене
1999)
C++ % Не визначене
C# % Ділене
Delphi mod Ділене
Microsoft =MOD() (анл. версия)
Дільник
Excel =ОСТАТ() (рус. версия)
Java % Ділене
JavaScript % Ділене
MOD Ділене
MySQL
%
Pascal mod Ділене

PHP % Ділене
Visual Basic Mod Ділимо

Наприклад, у Паскалі операція mod обчислює залишок від ділення, а


операція div здійснює цілечисельне ділення, при якому залишок від ділення
відкидається:
78 mod 33 = 12
78 div 33 = 2

Найбільший спільний дільник


Алгоритм Евкліда – це алгоритм знаходження найбільшого спільного
дільника (НСД) пари цілих чисел.
Найбільший спільний дільник (НСД) – це число, яке ділить без залишку
два числа і ділиться саме без залишку на будь-який інший дільник цих двох
чисел. Простіше кажучи, це найбільше число, на яке можна без залишку
розділити два числа, для яких шукається НСД.
Опис алгоритму знаходження НСД діленням
1. Більше число ділимо на менше.
2. Якщо ділиться без залишку, то менше і є НСД (слід вийти з циклу).
3. Якщо є залишок, то більше замінюємо на залишок від ділення.
4. Переходимо до пункту 1.
Приклад:
Знайти НСД для 30 і 18.
30/18 = 1 (залишок 12)
18/12 = 1 (залишок 6)
12/6 = 2 (залишок 0). Кінець: НСД – це дільник. НСД (30, 18) = 6

Опис алгоритму знаходження НСД відніманням


1. З більшого числа віднімаємо менше.
2. Якщо виходить 0, то означає, що числа дорівнюють один одному і є
НСД (слід вийти з циклу).
3. Якщо результат віднімання не дорівнює 0, то більше число
замінюємо на результат віднімання.
4. Переходимо до пункту 1.
Приклад:
Знайти НСД для 30 і 18.
30 - 18 = 12
18 - 12 = 6
12 - 6 = 6
6–6=0
НСД – це зменшуване чи від’ємник. НСД (30, 18) = 6

Взаємно прості числа


Цілі числа a і b є взаємно простими, якщо вони не мають спільних
простих дільників, тобто якщо їх єдиним спільним дільником є 1.
1.3 Самостійна робота

1. Знайти НСД чисел за алгоритмом Евкліда:


а) (589, 343);
б) (987, 610);
в) (2584, 377);
г) (9751, 6931);
д) (9665, 2180);
е) (10946, 2584).
2. Знайти залишок від ділення
а) 5120 + 7220 на 13;
б) 333777 + 777333 на 5;
в) 750 + 1150 на 17;
г) 11453 + 14135 на 31.
3. Знайти взаємо зворотні числа по mod 17:
3;9;35;642;377;843.
4. Скласти програму, що дозволяє визначити, чи є введені два числа
взаємно простими. Два числа називаються взаємно простими, якщо їхній
найбільший спільний дільник дорівнює 1.
5. Знайти найменше загальне кратне (НЗК) чисел n і m, якщо
НЗК(n, m) = n * m / НСД (n, m).
Числа n і m вводяться з клавіатури.

Додаткове завдання.
Від прямокутника 324x141 відрізають квадрати зі сторонами 141, поки це
можливо. Потім знову відрізають квадрати зі стороною, що дорівнює 324 -
2*141 =42 і т.д. На які квадрати та на скільки квадратів буде розрізано
трикутник?

You might also like