SlideShare a Scribd company logo
Введение:
наибольший общий делитель
Александр Куликов
Онлайн-курс «Алгоритмы: теория и практика. Методы»
http://stepic.org/217
Наибольший общий делитель
Определение
Наибольшим общим делителем (НОД) неотрицательных
целых чисел a и b называется наибольшее целое d,
которое делит и a, и b.
2 / 9
Наибольший общий делитель
Определение
Наибольшим общим делителем (НОД) неотрицательных
целых чисел a и b называется наибольшее целое d,
которое делит и a, и b.
Вычисление НОД
Вход: целые числа a, b ≥ 0.
Выход: НОД(a, b).
2 / 9
Наивный алгоритм
Функция NaiveGCD(a, b)
gcd ← 1
для d от 2 до max(a, b):
если d|a и d|b:
gcd ← d
вернуть gcd
3 / 9
Наивный алгоритм
Функция NaiveGCD(a, b)
gcd ← 1
для d от 2 до max(a, b):
если d|a и d|b:
gcd ← d
вернуть gcd
Время работы: примерно max{a, b}.
Работает очень медленно уже даже на числах,
состоящих из десяти знаков.
3 / 9
Лемма
Лемма
Пусть a ≥ b > 0 и r — остаток от деления a на b. Тогда
НОД(a, b) = НОД(r, b).
4 / 9
Лемма
Лемма
Пусть a ≥ b > 0 и r — остаток от деления a на b. Тогда
НОД(a, b) = НОД(r, b).
Доказательство
Достаточно доказать, что НОД(a, b) = НОД(a − b, b).
4 / 9
Лемма
Лемма
Пусть a ≥ b > 0 и r — остаток от деления a на b. Тогда
НОД(a, b) = НОД(r, b).
Доказательство
Достаточно доказать, что НОД(a, b) = НОД(a − b, b).
НОД(a, b) ≤ НОД(a − b, b): если d делит a и b, то
делит и a − b.
4 / 9
Лемма
Лемма
Пусть a ≥ b > 0 и r — остаток от деления a на b. Тогда
НОД(a, b) = НОД(r, b).
Доказательство
Достаточно доказать, что НОД(a, b) = НОД(a − b, b).
НОД(a, b) ≤ НОД(a − b, b): если d делит a и b, то
делит и a − b.
НОД(a, b) ≥ НОД(a − b, b): если d делит a − b и b, то
делит и a = (a − b) + b.
4 / 9
Алгоритм Евклида
Функция EuclidGCD(a, b)
если a = 0:
вернуть b
если b = 0:
вернуть a
если a ≥ b:
вернуть EuclidGCD(a mod b, b)
если b ≥ a:
вернуть EuclidGCD(a, b mod a)
5 / 9
Пример
НОД(3918848, 1653264)
6 / 9
Пример
НОД(3918848, 1653264)
=НОД(612320, 1653264)
6 / 9
Пример
НОД(3918848, 1653264)
=НОД(612320, 1653264)
=НОД(612320, 428624)
6 / 9
Пример
НОД(3918848, 1653264)
=НОД(612320, 1653264)
=НОД(612320, 428624)
=НОД(183696, 428624)
6 / 9
Пример
НОД(3918848, 1653264)
=НОД(612320, 1653264)
=НОД(612320, 428624)
=НОД(183696, 428624)
=НОД(183696, 61232)
6 / 9
Пример
НОД(3918848, 1653264)
=НОД(612320, 1653264)
=НОД(612320, 428624)
=НОД(183696, 428624)
=НОД(183696, 61232)
=НОД(0, 61232)
6 / 9
Пример
НОД(3918848, 1653264)
=НОД(612320, 1653264)
=НОД(612320, 428624)
=НОД(183696, 428624)
=НОД(183696, 61232)
=НОД(0, 61232)
=61232.
6 / 9
Лемма
Если a ≥ b > 0, то a mod b < a/2.
7 / 9
Лемма
Если a ≥ b > 0, то a mod b < a/2.
Доказательство
Если b ≤ a/2, то a mod b < b ≤ a/2.
b a/2 a
a mod b
7 / 9
Лемма
Если a ≥ b > 0, то a mod b < a/2.
Доказательство
Если b ≤ a/2, то a mod b < b ≤ a/2.
b a/2 a
a mod b
Если же b > a/2, то a mod b = a − b < a/2.
a/2 b a
a mod b
7 / 9
Время работы
Каждый шаг уменьшает одно из чисел хотя бы вдвое.
Количество шагов: не более log2 a + log2 b.
Каждый шаг — это деление.
Вычисление НОД двух чисел из ста десятичных
знаков производится за примерно 600 шагов.
Гораздо быстрее наивного алгоритма.
8 / 9
Заключение
Наивный алгоритм опять слишком медленный.
Правильный алгоритм гораздо более быстр.
Нахождение правильного алгоритма требует знания
некоторых свойств задачи.
9 / 9

More Related Content

What's hot

презентация
презентацияпрезентация
презентацияLIANA180
 
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
AIST
 
Общественный контроль экологического мониторинга: R, R и ещё раз R!
Общественный контроль экологического мониторинга: R, R и ещё раз R!Общественный контроль экологического мониторинга: R, R и ещё раз R!
Общественный контроль экологического мониторинга: R, R и ещё раз R!
Yevhen Vasylenko
 
ГДЗ к учебнику по Алгебре, ГДЗ по Алгебре (Задачник) 8 класс Мордкович А.Г. и...
ГДЗ к учебнику по Алгебре, ГДЗ по Алгебре (Задачник) 8 класс Мордкович А.Г. и...ГДЗ к учебнику по Алгебре, ГДЗ по Алгебре (Задачник) 8 класс Мордкович А.Г. и...
ГДЗ к учебнику по Алгебре, ГДЗ по Алгебре (Задачник) 8 класс Мордкович А.Г. и...You DZ
 
6логарифмы и их свойства
6логарифмы и их свойства6логарифмы и их свойства
6логарифмы и их свойства
Tatyana Zubareva
 
лекция№23
лекция№23лекция№23
лекция№23student_kai
 
ПРЕОБРАЗОВАНИЕ ЧИСЛОВЫХ ВЫРАЖЕНИЙ
ПРЕОБРАЗОВАНИЕ ЧИСЛОВЫХ ВЫРАЖЕНИЙПРЕОБРАЗОВАНИЕ ЧИСЛОВЫХ ВЫРАЖЕНИЙ
ПРЕОБРАЗОВАНИЕ ЧИСЛОВЫХ ВЫРАЖЕНИЙ
silvermlm
 
физика горения07
физика горения07физика горения07
физика горения07student_kai
 
Исследование внешних характеристик потерь и КПД трансформатора.
Исследование внешних характеристик потерь и КПД трансформатора.Исследование внешних характеристик потерь и КПД трансформатора.
Исследование внешних характеристик потерь и КПД трансформатора.
Nick535
 
векторы 11 класс
векторы 11 классвекторы 11 класс
векторы 11 классMarZac2
 
Механическая характеристика Асинхронного Двигателя.
Механическая характеристика Асинхронного Двигателя.Механическая характеристика Асинхронного Двигателя.
Механическая характеристика Асинхронного Двигателя.
Nick535
 
Трансформаторы
ТрансформаторыТрансформаторы
Трансформаторы
Nick535
 
лабораторная работа 5
лабораторная работа 5лабораторная работа 5
лабораторная работа 5student_kai
 
Umnozhenie mnogochlena na_mnogochlen
Umnozhenie mnogochlena na_mnogochlenUmnozhenie mnogochlena na_mnogochlen
Umnozhenie mnogochlena na_mnogochlen
Иван Иванов
 
mri ruby GC
mri ruby GCmri ruby GC
mri ruby GC
achempion
 
[DL輪読会]Deep Learning 第9章 畳み込みネットワーク
[DL輪読会]Deep Learning 第9章 畳み込みネットワーク[DL輪読会]Deep Learning 第9章 畳み込みネットワーク
[DL輪読会]Deep Learning 第9章 畳み込みネットワーク
Deep Learning JP
 

What's hot (16)

презентация
презентацияпрезентация
презентация
 
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
 
Общественный контроль экологического мониторинга: R, R и ещё раз R!
Общественный контроль экологического мониторинга: R, R и ещё раз R!Общественный контроль экологического мониторинга: R, R и ещё раз R!
Общественный контроль экологического мониторинга: R, R и ещё раз R!
 
ГДЗ к учебнику по Алгебре, ГДЗ по Алгебре (Задачник) 8 класс Мордкович А.Г. и...
ГДЗ к учебнику по Алгебре, ГДЗ по Алгебре (Задачник) 8 класс Мордкович А.Г. и...ГДЗ к учебнику по Алгебре, ГДЗ по Алгебре (Задачник) 8 класс Мордкович А.Г. и...
ГДЗ к учебнику по Алгебре, ГДЗ по Алгебре (Задачник) 8 класс Мордкович А.Г. и...
 
6логарифмы и их свойства
6логарифмы и их свойства6логарифмы и их свойства
6логарифмы и их свойства
 
лекция№23
лекция№23лекция№23
лекция№23
 
ПРЕОБРАЗОВАНИЕ ЧИСЛОВЫХ ВЫРАЖЕНИЙ
ПРЕОБРАЗОВАНИЕ ЧИСЛОВЫХ ВЫРАЖЕНИЙПРЕОБРАЗОВАНИЕ ЧИСЛОВЫХ ВЫРАЖЕНИЙ
ПРЕОБРАЗОВАНИЕ ЧИСЛОВЫХ ВЫРАЖЕНИЙ
 
физика горения07
физика горения07физика горения07
физика горения07
 
Исследование внешних характеристик потерь и КПД трансформатора.
Исследование внешних характеристик потерь и КПД трансформатора.Исследование внешних характеристик потерь и КПД трансформатора.
Исследование внешних характеристик потерь и КПД трансформатора.
 
векторы 11 класс
векторы 11 классвекторы 11 класс
векторы 11 класс
 
Механическая характеристика Асинхронного Двигателя.
Механическая характеристика Асинхронного Двигателя.Механическая характеристика Асинхронного Двигателя.
Механическая характеристика Асинхронного Двигателя.
 
Трансформаторы
ТрансформаторыТрансформаторы
Трансформаторы
 
лабораторная работа 5
лабораторная работа 5лабораторная работа 5
лабораторная работа 5
 
Umnozhenie mnogochlena na_mnogochlen
Umnozhenie mnogochlena na_mnogochlenUmnozhenie mnogochlena na_mnogochlen
Umnozhenie mnogochlena na_mnogochlen
 
mri ruby GC
mri ruby GCmri ruby GC
mri ruby GC
 
[DL輪読会]Deep Learning 第9章 畳み込みネットワーク
[DL輪読会]Deep Learning 第9章 畳み込みネットワーク[DL輪読会]Deep Learning 第9章 畳み込みネットワーク
[DL輪読会]Deep Learning 第9章 畳み込みネットワーク
 

Similar to Наибольший общий делитель

Gia 2013 god_modul_algebra_zadacha_7
Gia 2013 god_modul_algebra_zadacha_7Gia 2013 god_modul_algebra_zadacha_7
Gia 2013 god_modul_algebra_zadacha_7
Иван Иванов
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
Перевод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в UnicodeПеревод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в Unicode
InterSystems
 
364 1 гдз алгебра. 8 кл. задачник. мордкович а.г. и др-2002 -315с
364 1  гдз алгебра. 8 кл. задачник. мордкович а.г. и др-2002 -315с364 1  гдз алгебра. 8 кл. задачник. мордкович а.г. и др-2002 -315с
364 1 гдз алгебра. 8 кл. задачник. мордкович а.г. и др-2002 -315с
robinbad123100
 
20091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture0820091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture08Computer Science Club
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
Mikhail Kurnosov
 

Similar to Наибольший общий делитель (6)

Gia 2013 god_modul_algebra_zadacha_7
Gia 2013 god_modul_algebra_zadacha_7Gia 2013 god_modul_algebra_zadacha_7
Gia 2013 god_modul_algebra_zadacha_7
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
Перевод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в UnicodeПеревод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в Unicode
 
364 1 гдз алгебра. 8 кл. задачник. мордкович а.г. и др-2002 -315с
364 1  гдз алгебра. 8 кл. задачник. мордкович а.г. и др-2002 -315с364 1  гдз алгебра. 8 кл. задачник. мордкович а.г. и др-2002 -315с
364 1 гдз алгебра. 8 кл. задачник. мордкович а.г. и др-2002 -315с
 
20091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture0820091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture08
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 

More from DEVTYPE

Рукописные лекции по линейной алгебре
Рукописные лекции по линейной алгебреРукописные лекции по линейной алгебре
Рукописные лекции по линейной алгебре
DEVTYPE
 
1.4 Точечные оценки и их свойства
1.4 Точечные оценки и их свойства1.4 Точечные оценки и их свойства
1.4 Точечные оценки и их свойства
DEVTYPE
 
1.3 Описательная статистика
1.3 Описательная статистика1.3 Описательная статистика
1.3 Описательная статистика
DEVTYPE
 
1.2 Выборка. Выборочное пространство
1.2 Выборка. Выборочное пространство1.2 Выборка. Выборочное пространство
1.2 Выборка. Выборочное пространство
DEVTYPE
 
Continuity and Uniform Continuity
Continuity and Uniform ContinuityContinuity and Uniform Continuity
Continuity and Uniform Continuity
DEVTYPE
 
Coin Change Problem
Coin Change ProblemCoin Change Problem
Coin Change Problem
DEVTYPE
 
Recurrences
RecurrencesRecurrences
Recurrences
DEVTYPE
 
D-кучи и их применение
D-кучи и их применениеD-кучи и их применение
D-кучи и их применение
DEVTYPE
 
Диаграммы Юнга, плоские разбиения и знакочередующиеся матрицы
Диаграммы Юнга, плоские разбиения и знакочередующиеся матрицыДиаграммы Юнга, плоские разбиения и знакочередующиеся матрицы
Диаграммы Юнга, плоские разбиения и знакочередующиеся матрицы
DEVTYPE
 
ЖАДНЫЕ АЛГОРИТМЫ
ЖАДНЫЕ АЛГОРИТМЫ ЖАДНЫЕ АЛГОРИТМЫ
ЖАДНЫЕ АЛГОРИТМЫ
DEVTYPE
 
Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функций
DEVTYPE
 
Asymptotic Growth of Functions
Asymptotic Growth of FunctionsAsymptotic Growth of Functions
Asymptotic Growth of Functions
DEVTYPE
 
Кучи
КучиКучи
Кучи
DEVTYPE
 
Кодирование Хаффмана
Кодирование ХаффманаКодирование Хаффмана
Кодирование Хаффмана
DEVTYPE
 
Жадные алгоритмы: введение
Жадные алгоритмы: введениеЖадные алгоритмы: введение
Жадные алгоритмы: введение
DEVTYPE
 
Разбор задач по дискретной вероятности
Разбор задач по дискретной вероятностиРазбор задач по дискретной вероятности
Разбор задач по дискретной вероятности
DEVTYPE
 
Разбор задач модуля "Теория графов ll"
Разбор задач модуля "Теория графов ll"Разбор задач модуля "Теория графов ll"
Разбор задач модуля "Теория графов ll"
DEVTYPE
 
Числа Фибоначчи
Числа ФибоначчиЧисла Фибоначчи
Числа Фибоначчи
DEVTYPE
 
О-символика
О-символикаО-символика
О-символика
DEVTYPE
 
Зачем изучать алгоритмы?
Зачем изучать алгоритмы?Зачем изучать алгоритмы?
Зачем изучать алгоритмы?
DEVTYPE
 

More from DEVTYPE (20)

Рукописные лекции по линейной алгебре
Рукописные лекции по линейной алгебреРукописные лекции по линейной алгебре
Рукописные лекции по линейной алгебре
 
1.4 Точечные оценки и их свойства
1.4 Точечные оценки и их свойства1.4 Точечные оценки и их свойства
1.4 Точечные оценки и их свойства
 
1.3 Описательная статистика
1.3 Описательная статистика1.3 Описательная статистика
1.3 Описательная статистика
 
1.2 Выборка. Выборочное пространство
1.2 Выборка. Выборочное пространство1.2 Выборка. Выборочное пространство
1.2 Выборка. Выборочное пространство
 
Continuity and Uniform Continuity
Continuity and Uniform ContinuityContinuity and Uniform Continuity
Continuity and Uniform Continuity
 
Coin Change Problem
Coin Change ProblemCoin Change Problem
Coin Change Problem
 
Recurrences
RecurrencesRecurrences
Recurrences
 
D-кучи и их применение
D-кучи и их применениеD-кучи и их применение
D-кучи и их применение
 
Диаграммы Юнга, плоские разбиения и знакочередующиеся матрицы
Диаграммы Юнга, плоские разбиения и знакочередующиеся матрицыДиаграммы Юнга, плоские разбиения и знакочередующиеся матрицы
Диаграммы Юнга, плоские разбиения и знакочередующиеся матрицы
 
ЖАДНЫЕ АЛГОРИТМЫ
ЖАДНЫЕ АЛГОРИТМЫ ЖАДНЫЕ АЛГОРИТМЫ
ЖАДНЫЕ АЛГОРИТМЫ
 
Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функций
 
Asymptotic Growth of Functions
Asymptotic Growth of FunctionsAsymptotic Growth of Functions
Asymptotic Growth of Functions
 
Кучи
КучиКучи
Кучи
 
Кодирование Хаффмана
Кодирование ХаффманаКодирование Хаффмана
Кодирование Хаффмана
 
Жадные алгоритмы: введение
Жадные алгоритмы: введениеЖадные алгоритмы: введение
Жадные алгоритмы: введение
 
Разбор задач по дискретной вероятности
Разбор задач по дискретной вероятностиРазбор задач по дискретной вероятности
Разбор задач по дискретной вероятности
 
Разбор задач модуля "Теория графов ll"
Разбор задач модуля "Теория графов ll"Разбор задач модуля "Теория графов ll"
Разбор задач модуля "Теория графов ll"
 
Числа Фибоначчи
Числа ФибоначчиЧисла Фибоначчи
Числа Фибоначчи
 
О-символика
О-символикаО-символика
О-символика
 
Зачем изучать алгоритмы?
Зачем изучать алгоритмы?Зачем изучать алгоритмы?
Зачем изучать алгоритмы?
 

Наибольший общий делитель