
- •Наївні методи
- •Ймовірнісні тести
- •Швидкі детерміновані тести
- •Алгоритм Евкліда
- •Найбільший спільний дільник.
- •Алгоритм
- •Хід роботи:
- •Виконання
- •Хід роботи:
- •Хід роботи:
- •Хід роботи:
- •Хід роботи:
- •Хід роботи:
- •Хід роботи:
- •Хід роботи:
- •Виконання
- •Розв’язання
- •Хід роботи:
- •Хід роботи:
- •Хід роботи:
- •Виконання
- •Хід роботи:
- •Виконання
- •Хід роботи:
- •Хід роботи:
- •Виконання
- •Завдання.
Найбільший спільний дільник.
Алгоритм Евкліда обчислює найбільший спільний дільник (НСД) двох натуральних чисел a та b. Найбільший спільний дільник g — це найбільше натуральне число яке ділить як a так і b без залишку. Найбільший спільний дільник також записують як НСД(a, b).
Якщо НСД(a, b) = 1, тоді a та b називають взаємно простими. Ця властивість не залежить від того, чи прості числа a та b. Наприклад, ні 6 ні 35 не прості, оскільки їх можна розкласти на добутки 6 = 2 × 3 та 35 = 5 × 7. Однак, 6 та 35 взаємно прості. Жодне натуральне число окрім 1 не ділить водночас 6 та 35, оскільки у них нема спільних дільників.
Нехай g = НСД(a, b). Оскільки a та b є добутками g, їх можна записати, як a = mg та b = ng, і не існує більшого числа G > g з такою ж властивістю. Натуральні числа m та n мають бути взаємно простими, оскільки інший спільний дільник може бути виділений з m та n, що збільшить g. Таким чином, будь-яке число c, що ділить a та b має ділити і g. Найбільший спільний дільник g чисел a та b може бути визначений, як спільний дільник, який можна поділити іншим спільним дільником c.
Поняття НСД можна проілюструвати наступним чином. Розглянемо прямокутник зі сторонами a та b, та будь-який спільний дільник c, що ділить і a, і b без залишку. Ребра прямокутника можна поділити на відрізки довжиною c, які поділять прямокутник на сітку квадратів зі стороною c. Найбільший спільний дільник g дорівнює найбільшому можливому значенню c. Наприклад, прямокутник 24 на 60 може бути покрита сіткою квадратів зі стороною 1, 2, 3, 6 або 12. Таким чином, 12 є найбільшим спільним дільником 24 та 60. Прямокутник 24 на 60 можна поділити сіткою квадратами з ребром 12, два квадрати вздовж одного ребра (24/12 = 2), та п'ятеро (60/12 = 5) вздовж іншого.
Найбільший спільний дільник a та b можна визначити як добуток спільних дільників обох чисел. Наприклад, оскільки 462 можна розкласти на добуток 2 × 3 × 7 × 11 а 1071 можна розкласти на добуток 3 × 3 × 7 × 17, найбільший спільний дільник 462 та 1071 дорівнює 21 = 3 × 7, добутку їхніх спільних дільників. Якщо два числа не мають спільних дільників, їх найбільший спільних дільник 1 і вони взаємно прості. Ключовою перевагою алгоритма Евкліда є ефективне знаходження НСД без необхідності обчислення дільників. Розклад великих цілих чисел на дільники є криптографічно складною задачею, яка лежить в основі багатьох сучасних криптографічних систем.
НСД трьох або більшої кількості чисел дорівнює добутку дільників спільних для трьох чисел, який можна обчислити на основі НСД пар чисел. Наприклад,
НСД(a, b, c) = НСД(a, НСД(b, c)) = НСД(НСД(a, b), c) = НСД(НСД(a, c), b).
Тобто, алгоритм Евкліда обчислення найбільшого спільного дільника двох цілих підходить і для обчислення НСД довільної кількості цілих.
Алгоритм
a = q0b + r0 (0)
b = q1r0 + r1 (1)
r0 = q2r1 + r2 (2)
r1 = q3r2 + r3 (3)
. . .
rn - 3 = qn-1rn-2 + rn-1 (n-1)
rn - 2 = qnrn-1 + 0 (0)
Алгоритм Евкліда ітеративний, тобто, пошук розв'язку відбувається за декілька кроків. Для того щоб знайти НСД(a, b) на 0-му кроці знаходять остачу r0 від ділення a на b. На 1-му кроці знаходять остачу від ділення b на r0. Оскільки залишки зменшуються на кожному кроці але не можуть бути від'ємними, то цю операцію виконують n кроків до тих пір поки не отримують остачу 0. Найбільшим спільним дільником є остання не нульова остача rn−1. Кількість кроків в алгоритмі має бути скінченною, оскільки існує лише скінченна кількість цілих чисел між початковим залишком r0 та нулем.
Приклад №1