Калькулятор остатка от деления
Операция взятия остатка (или “mod”) возвращает остаток от целочисленного деления: 17 mod 5 = 2, потому что 17 = 3·5 + 2. Это основа арифметики часов, криптографии, хеш-функций и шаблона “каждая N-я строка” в SQL. Этот калькулятор принимает целые или десятичные операнды, явно показывает частное и остаток и учитывает различия в соглашениях о знаке между языками (% в Python ≠ % в C для отрицательных чисел).
Как вычислить a mod b
-
1
Введите делимое (a) и делитель (b)
Любые числа; десятичные и отрицательные значения допустимы.
-
2
Выберите соглашение о знаке
Деление с усечением (C, Java, Go), деление с округлением вниз (Python, Ruby, математическое соглашение).
-
3
Прочитайте частное и остаток
a = q·b + r, с выбранным правилом для знака r.
-
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.
Калькулятор «сколько часов назад»
Узнайте точные дату и время, которые были заданное число часов назад от текущего момента.
Инструмент доступен на других языках
- Modulokalkylator [SV]
- حاسبة باقي القسمة (Modulo) [AR]
- เครื่องคำนวณโมดูโล (Modulo) [TH]
- Modulo-Rechner [DE]
- Calculadora de Módulo [ES]
- Calculateur de Modulo [FR]
- Kalkulator Modulo [ID]
- 모듈로 계산기 [KO]
- Modulo-calculator [NL]
- Kalkulator modulo [PL]
- Máy tính modulo [VI]
- 剰余計算機 [JA]
- Calculadora de Módulo [PT]
- Modulo Calculator [EN]
- Calcolatore Modulo [IT]
- Modulo Hesaplayıcı [TR]
- 取模计算器 [ZH]