Калькулятор остатка от деления

Остаток (a mod b)
Далее

Операция взятия остатка (или “mod”) возвращает остаток от целочисленного деления: 17 mod 5 = 2, потому что 17 = 3·5 + 2. Это основа арифметики часов, криптографии, хеш-функций и шаблона “каждая N-я строка” в SQL. Этот калькулятор принимает целые или десятичные операнды, явно показывает частное и остаток и учитывает различия в соглашениях о знаке между языками (% в Python ≠ % в C для отрицательных чисел).

Как вычислить a mod b

  1. 1

    Введите делимое (a) и делитель (b)

    Любые числа; десятичные и отрицательные значения допустимы.

  2. 2

    Выберите соглашение о знаке

    Деление с усечением (C, Java, Go), деление с округлением вниз (Python, Ruby, математическое соглашение).

  3. 3

    Прочитайте частное и остаток

    a = q·b + r, с выбранным правилом для знака r.

  4. 4

    Посмотрите математическое выражение

    Подставленные значения делают каждый шаг наглядным.

Два соглашения для отрицательных чисел

Для положительных операндов все соглашения совпадают: 17 mod 5 = 2. Для отрицательных чисел языки различаются:

Язык -17 mod 5 Соглашение
Python, Ruby 3 Округление вниз
C, Java, Go, JS -2 Усечение
Учебники математики 3 Округление вниз (обычно)

Деление с округлением вниз: частное округляется в сторону −∞. Остаток всегда имеет знак делителя: тот же знак, что и b. Деление с усечением: частное округляется в сторону нуля. Остаток имеет знак делимого: тот же знак, что и a.

Для a = -17, b = 5:

  • Усечение: q = -3 (округлено к 0), r = -17 − (-3)·5 = -2.
  • Округление вниз: q = -4 (округлено к -∞), r = -17 − (-4)·5 = 3.

Оба варианта верны в рамках своего соглашения. Выбирайте тот, что соответствует вашему языку.

Где встречается остаток от деления

  • Время. Минуты в часе, дни недели, секунды в сутках, всё это арифметика остатков.
  • Хеш-таблицы. hash(key) mod table_size выбирает корзину.
  • Циклическое (round-robin) планирование. task_i mod worker_count распределяет работу.
  • Криптография. RSA и Диффи, Хеллман построены на mod n с огромными простыми числами.
  • Каждая N-я строка. В SQL: WHERE id % 3 = 0.
  • Проверка на чётность. n mod 2 == 0 означает чётное число.
  • Чередующиеся узоры. Полосатость строк, окрашивание каждого второго элемента.
  • Кольцевые буферы. (index + 1) mod size замыкается по кругу.

Полезные тождества

  • (a + b) mod n = ((a mod n) + (b mod n)) mod n
  • (a · b) mod n = ((a mod n) · (b mod n)) mod n
  • (a^k) mod n можно вычислить быстрым модульным возведением в степень за O(log k), это критично для криптографии больших чисел.
  • a mod 1 = 0 для любого целого a.
  • a mod a = 0.

Остаток от деления для десятичных чисел

Для вещественных чисел естественное определение, a mod b = a − b · floor(a/b). 7.5 mod 2.5 = 0, потому что 7,5, точное кратное. 7.6 mod 2.5 = 0.1.

Оператор % в JavaScript работает с вещественными числами; fmod в Python выполняет вещественный остаток с усечением; % в Python выполняет вещественный остаток с округлением вниз.

Разобранные примеры

  • 100 mod 7: 100 = 14·7 + 2, поэтому остаток 2.
  • 25 mod 4: 25 = 6·4 + 1, поэтому остаток 1.
  • -10 mod 3 (округление вниз): -10 = -4·3 + 2, остаток 2. (Усечение дало бы -1.)
  • 17.5 mod 5: 17,5 = 3·5 + 2,5, остаток 2,5.

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

В большинстве случаев это синонимы. Формально “modulo” часто подразумевает математическое соглашение (округление вниз), тогда как “remainder” (остаток) обычно относится к варианту с усечением (стиль C). Эти названия проникают в документацию языков; когда это важно, явно указывайте соглашение.

Python следует математическому соглашению (округление вниз), при котором знак остатка совпадает со знаком делителя. C следует аппаратному соглашению ALU (усечение), при котором знак остатка совпадает со знаком делимого. Ни один не является ошибочным; это разные решения.

Нет, деление на ноль не определено. Калькулятор возвращает ошибку при b = 0.

Обычно да. Проверьте спецификацию своего языка по обработке отрицательных чисел, Python и Ruby отличаются от C, Java, Go и JavaScript.

Для математики в стиле RSA с 2048-битными числами используйте специализированную библиотеку (pow(a, b, n) в Python, BigInteger.modPow в Java). Этот калькулятор работает с обычными значениями, а не с числами криптографического уровня.

Сопутствующие инструменты

Калькулятор длительности

Рассчитайте длительность между двумя часами в формате HH:MM, десятичных часах, минутах и секундах.

Калькулятор балясин

Введите свободный пролёт перил, ширину балясины и максимально допустимый зазор, чтобы получить точное количество необходимых балясин и равный промежуток между каждой стойкой, не превышающий нормативный предел.

Калькулятор делительной окружности отверстий

Рассчитайте PCD, угловой шаг и точные координаты X/Y равномерных отверстий с поворотом, смещением центра и экспортом CSV.

Калькулятор длины ремня

Рассчитайте длину открытого ремня по делительной линии из диаметров двух шкивов и межосевого расстояния точным и приближённым методом.

Калькулятор гематрии

Рассчитайте значение гематрии для любого слова или фразы в шести английских шифрах: Simple/Ordinal, Full Reduction, Reverse, Sumerian и Jewish/Latin.

Калькулятор «сколько часов назад»

Узнайте точные дату и время, которые были заданное число часов назад от текущего момента.

Инструмент доступен на других языках