АЛГ-EUC-008O(log min)300 г. до н.э.ревизия 2026-05-04

Алгоритм Евклида — НОД онлайн

Расчёт НОД методом Евклида. Расширенный алгоритм, бинарный вариант, применение в RSA-криптографии.

⏱ ~30 сек · алгоритм · O(N)
Отчёт · АЛГ-EUC-008|алгоритм / численный метод
calcal.ru / algoritm-evklida-nod-onlajn
Загрузка калькулятора…
O(log)
Сложность
300 BC
Древнейший
НОД
Главная цель
RSA
Применение

История алгоритма Евклида

Алгоритм Евклида — самый древний алгоритм в истории, описанный Евклидом в книге VII «Начал» около 300 г. до н.э. Используется до сих пор в чистом виде и во многих расширениях.

Основной принцип: НОД(a, b) = НОД(b, a mod b). Повторяя эту замену, мы за O(log min(a,b)) шагов приходим к ситуации, когда одно из чисел становится 0 — тогда другое и есть НОД.

Как работает алгоритм

function gcd(a, b): while b != 0: a, b = b, a mod b return a

Пример: НОД(48, 18).

  1. 48 mod 18 = 12 → НОД(18, 12).
  2. 18 mod 12 = 6 → НОД(12, 6).
  3. 12 mod 6 = 0 → НОД(6, 0) = 6. Готово.

За 3 шага. Для числа в миллиарды нужно ~30 шагов (log₂ 10⁹ ≈ 30).

Расширенный алгоритм

Расширенный находит не только НОД, но и коэффициенты Безу x, y такие, что:

a · x + b · y = НОД(a, b)

function extended_gcd(a, b): if b == 0: return a, 1, 0 g, x1, y1 = extended_gcd(b, a mod b) x = y1 y = x1 - (a // b) * y1 return g, x, y

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

Применение алгоритма

  • RSA-криптография: нахождение секретного ключа d = e⁻¹ mod φ(n).
  • Сокращение дробей: 48/18 = (48/НОД)/(18/НОД) = 8/3.
  • Линейные диофантовы уравнения: ax + by = c имеет решения тогда и только тогда, когда c кратно НОД(a, b).
  • Музыка и ритм: гармонические интервалы — отношения частот, упрощённых через НОД.
  • Распределение задач: «когда два автобуса встретятся снова?» — НОК(12, 18) = 12·18/НОД = 216/6 = 36 мин.
  • Компьютерные сети: распределение IP-адресов, маски подсетей.
  • Эллиптическая криптография: операции в конечных полях.
ИСТОЧНИКИ
  1. Евклид — Начала, книга VII. Евклид. ~300 BC.
  2. Knuth D.E. — The Art of Computer Programming, Vol. 2: Seminumerical Algorithms. Donald Knuth. 1997.
  3. Cormen, Leiserson, Rivest, Stein — CLRS, Ch. 31. CLRS. 2022.
ЧАСТЫЕ ВОПРОСЫ

Часто задаваемые вопросы

Древнейший алгоритм в истории — описан Евклидом в «Началах» (300 г. до н.э.) для нахождения НОД (наибольшего общего делителя) двух чисел. Принцип: НОД(a, b) = НОД(b, a mod b). Повторяем, пока b не станет 0. Тогда НОД = a. Сложность O(log min(a,b)). Работает за миллисекунды для чисел в миллиарды.
Шаг 1: НОД(48, 18) → 48 mod 18 = 12 → НОД(18, 12). Шаг 2: 18 mod 12 = 6 → НОД(12, 6). Шаг 3: 12 mod 6 = 0 → НОД(6, 0) = 6. Готово. Можно делать вычитанием вместо деления, но это медленнее: НОД(a, b) = НОД(a-b, b) — но требует много шагов для больших разниц.
Находит не только НОД(a, b) = d, но и коэффициенты x, y такие, что ax + by = d (Безу). Используется в криптографии (RSA — нахождение обратного по модулю), решении уравнений в целых числах. Псевдокод: gcd(a, b, x, y): if b=0: return a, 1, 0; else g, x1, y1 = gcd(b, a mod b); return g, y1, x1 − (a/b)·y1.
Альтернатива классическому, использует только сдвиги и вычитания. Применим в hardware, embedded systems где деление дорогое. Идея: 1) если оба чётные — НОД(a, b) = 2·НОД(a/2, b/2). 2) если одно чётное, другое нечётное — НОД(a, b) = НОД(a/2, b). 3) если оба нечётные — НОД(a, b) = НОД((a-b)/2, b) если a > b. Сложность O(log² min(a,b)) — медленнее классического в теории, но быстрее на практике без деления.
RSA-криптография требует нахождения секретного ключа d такого, что e·d ≡ 1 (mod φ(n)), где e — публичный ключ, φ(n) — функция Эйлера. Это эквивалентно нахождению d = e⁻¹ mod φ(n) — обратное по модулю. Расширенный алгоритм Евклида решает: e·d + φ(n)·k = 1, откуда d = коэффициент при e. Без него RSA невозможен.
НОК (наименьшее общее кратное) находится через НОД: НОК(a, b) = a · b / НОД(a, b). Сложность та же O(log min(a,b)). Полезно в задачах типа: «через сколько часов два автобуса встретятся снова?» (если один ходит каждые 12 мин, другой каждые 18 мин → НОК(12, 18) = 36 мин).
Лиана Арифметова
АВТОРverifiedред. calcal.ru

Лиана Арифметова

Создатель и главный редактор

Миссия: демократизировать сложные расчёты. Превратить страх перед числами в ясность и контроль. Девиз: «Любая повторяющаяся задача заслуживает своего калькулятора».

Mathematical Engineering · МФТИ · редактирует каталог с 2012 года

Был ли этот калькулятор полезен?

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

Инструмент справочный — не заменяет эксперта

Только для информационных целей. Все расчёты, результаты и данные, предоставляемые инструментом, носят исключительно ознакомительный и справочный характер. Они не являются профессиональной консультацией — медицинской, юридической, финансовой, инженерной или иной.

Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.

Профессиональные решения — медицинские, финансовые, инженерные — должны приниматься только после консультации с квалифицированным специалистом. Не используйте автоматический расчёт как единственное основание для важных решений.

Ограничение ответственности. Авторы и разработчики сервиса не несут ответственности за прямой или косвенный ущерб, возникший из-за использования данных расчётов. Пользователь принимает на себя всю ответственность за интерпретацию результатов.