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