Шаблон:Mod/doc

Материал из Абсурдопедии
Перейти к навигации Перейти к поиску

Шаблон реализует математический оператор деления по модулю. Его не следует путать с функцией парсера mod (остаток от деления после усечения обоих операндов до целого числа).

Возвращаемый результат всегда имеет тот же знак, что и делитель или ноль, и его абсолютное значение меньше абсолютного значения делителя. Однако этот шаблон возвращает 0, если делитель равен нулю (этот шаблон никогда не должен возвращать ошибку деления на ноль).

Абсурдопедия Образовательная: Деление по модулю (чаще говорят «взятие остатка по модулю») — это операция, которая находит остаток от деления одного числа на другое.

Обозначается обычно как a mod b (или a % b в программировании).

Например:

  • 7 mod 3 = 1 (7 = 3·2 + 1)
  • 10 mod 5 = 0 (делится нацело)
  • 2 mod 5 = 2 (2 меньше 5, поэтому остаётся само число)

Важная тонкость: отрицательные числа

В математике и в разных языках программирования результат может отличаться:

  • В Python: -7 % 3 = 2 (результат всегда имеет знак делителя)
  • В C/C++/Java: -7 % 3 = -1 (знак берётся от делимого)
  • У нас на вики — знак берётся от делимого

Где это используется:

  1. Проверка чётности: n % 2 == 0 — число чётное.
  2. Циклический сдвиг: часы — 14 mod 12 = 2 (2 часа дня).
  3. Хеширование и криптография.
  4. Алгоритмы: например, алгоритм Евклида для НОД (наибольшего общего делителя).