Перейти к основному содержанию
CalcMax

Калькулятор остатка

Диапазон: -1 000 000 000 – 1 000 000 000

Диапазон: -1 000 000 000 – 1 000 000 000

Результат

9

Частное

Остаток
2
Проверка
5 * 9 + 2 = 47

Остаток — это то, что остаётся от целого числа после того, как из него вычли наибольшее целое число раз, которое в него укладывается делитель; а частное — это сколько раз он уложился. Для 47 и 5 ответ однозначен: 5 укладывается в 47 девять раз, это 45, и остаётся 2, значит частное равно 9, а остаток равен 2. Эти два числа связаны определением, а не процедурой — делимое равно делителю, умноженному на частное, плюс остаток, — и эта проверка печатается рядом с ними, потому что частное и остаток верны только в паре. Однозначность заканчивается там, где делимое или делитель отрицательны, и именно об этом вся эта страница. В ходу два соглашения, и для одного и того же ввода они дают разные ответы. Усечение отбрасывает дробную часть точного частного, поэтому частное движется к нулю, а остаток берёт знак делимого: −47 ÷ 5 усекается до −9 с остатком −2. Евклидово деление — в поле «Правило остатка» оно подписано как «Евклидов» — вместо этого сдвигает частное на следующее целое вниз, и остаток получается неотрицательным: −47 ÷ 5 даёт −10 с остатком 3. Оба варианта удовлетворяют определению — и 5 × −9 + −2, и 5 × −10 + 3 дают −47, — поэтому одно определение не может сказать, какое из них имел в виду конкретный инструмент, и именно поэтому соглашение здесь является вводом, а не скрытым выбором. По умолчанию выбрано усечение, потому что так поступает большинство языков программирования и это же большинство людей подразумевает под целочисленным делением; евклидов вариант нужен модульной арифметике, где отрицательный остаток бесполезен. Заметьте, что остальные особые случаи выводятся из определения. Когда делимое равно 0, частное и остаток тоже равны 0. Когда делитель больше делимого, положительное делимое даёт частное 0 и остаток, равный делимому. А когда делитель укладывается ровно, остаток равен 0 при любом соглашении.

Все четыре комбинации знаков у −47 и 5 при обоих соглашениях

ДелимоеДелительУсечённыйЕвклидов
-475-9 r -2-10 r 3
-47-59 r -210 r 3
47-5-9 r 2-9 r 2
4759 r 29 r 2

Вся страница в четырёх строках. Сначала прочитайте две последние: когда оба числа положительны, а также когда делимое положительно, а делитель отрицателен, оба столбца дают один и тот же ответ — 47 ÷ 5 это 9 с остатком 2 в любом случае, и 47 ÷ −5 это −9 с остатком 2 тоже в любом случае. Соглашения расходятся только тогда, когда делимое отрицательно. Первая строка — тот случай, ради которого страница и сделана: −47 ÷ 5 это −9 с остатком −2 при усечении и −10 с остатком 3 при евклидовом делении, два верных разложения одного и того же числа. Вторая строка показывает, что смена знака делителя меняет частное, а остаток ведёт себя по тому же правилу, так что правило не сводится к простому «отрицательное делимое — отрицательный остаток». Каждая запись удовлетворяет равенству «делимое равно делителю, умноженному на частное, плюс остаток» — проверьте любую, — и именно поэтому одно определение не может выбрать между двумя столбцами. Таблица не следует за вашим вводом; панель выше применяет выбранное вами соглашение к вашим числам. Значения в ячейках напечатаны так, как их выдаёт расчёт: минус там обычный дефис, а латинская «r» между числами означает «остаток», поэтому «-9 r -2» читается как «частное -9, остаток -2».

Формула

47 = 5 × 9 + 2 ⇒ частное 9, остаток 2; при евклидовом делении −47 = 5 × −10 + 3, при усечении −47 = 5 × −9 + −2

47
Делимое, то число, которое делят, — целое от −1 000 000 000 до 1 000 000 000. Отрицательные значения допустимы и как раз ради них на странице есть поле с соглашением. Дробные числа не принимаются и не округляются: остаток — это утверждение о целых числах
5
Делитель, целое от −1 000 000 000 до 1 000 000 000. Нулём он быть не может: никакое частное не удовлетворило бы проверке. Отрицательным он быть может, и отрицательный делитель меняет знак частного при обоих соглашениях — именно строка проверки и удерживает это в порядке
усечение
Соглашение, отбрасывающее дробную часть точного частного и движущее его к нулю: −47 ÷ 5 даёт −9, потому что −9,4 усекается до −9. Остаток при этом несёт знак делимого и может быть отрицательным. Так поступает большинство языков программирования, и здесь это вариант по умолчанию
евклидово деление
Соглашение, которое сдвигает частное на следующее целое вниз, так что остаток никогда не отрицателен: −47 ÷ 5 даёт −10 с остатком 3. Теория чисел и модульная арифметика требуют именно его, потому что отрицательный остаток бессмыслен, когда обозначает позицию в цикле. Когда оба числа положительны, соглашения совпадают
частное 9
Сколько целых раз укладывается делитель. При усечении это точное частное с отброшенной дробной частью; при евклидовом делении — точное частное, округлённое вниз. Ровно на 1 они расходятся тогда, когда из-за знаков остаток получается отрицательным, и никогда иначе
остаток 2
То, что осталось, — и число, ради которого существует вся эта страница. По модулю он всегда меньше делителя и равен 0, когда деление выходит точным. Его знак и есть всё различие между соглашениями: при усечении он следует за делимым, при евклидовом делении никогда не опускается ниже 0

Деление на группы — житейский случай, и именно в нём соглашение никогда не важно: 47 предметов по 5 штук дают 9 полных групп и 2 в остатке, и никто не назвал бы ответ −9 с остатком −2. Соглашение начинает иметь значение в тот момент, когда появляются отрицательные числа, а это случается чаще, чем кажется. Целочисленное деление в программировании — обычное дело: большинство языков усекают, поэтому −47 / 5 даёт −9 и остаток −2, и код, который предполагает остаток неотрицательным, ломается на отрицательных вводах. Модульная арифметика — вторая сторона: время на часах, календарные даты, перебор по кругу и компьютерная арифметика на целых фиксированной ширины — всё это требует евклидова варианта, потому что «три шага назад отсюда» обязано попасть в реальную позицию цикла. В учебном курсе остаток при усечении — это то, что проходят вместе с делением в столбик, а отрицательные там либо исключены, либо разбираются по тому же правилу «знак следует за делимым». Строкой проверки стоит пользоваться в каждом из этих случаев, потому что два соглашения дают частные, отличающиеся на единицу, и остатки, отличающиеся на делитель, и обе пары удовлетворяют определению — а пара, которая ему не удовлетворяет, это ошибка независимо от того, какое соглашение имелось в виду.

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

  1. 47 ÷ 5: соглашения совпадают

    1. 5 укладывается в 47 девять раз: 5 × 9 = 45
    2. 47 − 45 = 2, значит остаётся 2
    3. Точное частное равно 9,4, и усечение даёт 9
    4. Евклидов вариант от 9,4 тоже даёт 9, так что здесь соглашения совпадают
    5. Проверка: 5 × 9 + 2 = 47

    Вариант по умолчанию и случай, в котором поле с соглашением ни на что не влияет. Оба соглашения совпадают всегда, когда делимое и делитель одного знака, а это включает любую пару положительных чисел — выбор проявляется только тогда, когда одно из двух отрицательно. Читать проверку как предложение — полезная привычка: делитель умножить на частное плюс остаток должно в точности вернуть делимое.

  2. −47 ÷ 5 при усечении: остаток уходит в минус

    1. Точное частное: −47 ÷ 5 = −9,4
    2. Усечение отбрасывает дробную часть и движет частное к нулю: −9
    3. 5 × −9 = −45, это на 2 больше, чем −47, значит 2 нужно вернуть: остаток равен −2
    4. Остаток берёт знак делимого — именно поэтому здесь он отрицательный
    5. Проверка: 5 × −9 + (−2) = −47

    Частное равно −9, а не −10, и остаток равен −2, а не 3. И эта пара, и следующая удовлетворяют одному и тому же определению, в чём и смысл страницы: −9 с остатком −2 и −10 с остатком 3 — оба верные разложения −47, и именно соглашение решает, какое из них вы получите. Большинство языков программирования попадают сюда, поэтому код, который предполагает остаток неотрицательным, будет удивлён этой строкой.

  3. −47 ÷ 5 при евклидовом делении: остаток остаётся неотрицательным

    1. Точное частное по-прежнему −47 ÷ 5 = −9,4
    2. Евклидово деление сдвигает его на следующее целое вниз, а не к нулю: −10
    3. 5 × −10 = −50, это на 3 меньше, чем −47, значит остаётся 3: остаток равен 3
    4. Остаток неотрицателен — это и гарантирует данное соглашение
    5. Проверка: 5 × (−10) + 3 = −47

    То же делимое, тот же делитель, другой ответ — и это не исправление предыдущего примера. Евклидово деление нужно модульной арифметике, потому что остаток, обозначающий позицию в цикле, не может быть отрицательным; −47 по модулю 5 равно в этом случае 3, и от любого результата операции по модулю ожидают попадания между 0 и делителем. Частное здесь на единицу меньше, чем при усечении, а остаток больше ровно на делитель — это и есть жёсткая связь между двумя соглашениями.

  4. Отрицательный делитель у самой границы: 1 000 000 000 ÷ −999 999 999

    1. Делитель отрицательный, поэтому точное частное тоже отрицательное: примерно −1,000000001
    2. Усечение к нулю даёт −1
    3. −999 999 999 × −1 = 999 999 999, то есть на 1 меньше 1 000 000 000
    4. Остаток равен 1, и он берёт знак делимого, а делимое положительное
    5. Проверка: −999 999 999 × −1 + 1 = 1 000 000 000

    Оба числа стоят на краю того, что страница принимает, и частное получается −1, потому что делитель лишь чуть-чуть больше делимого по модулю. Читать здесь стоит строку проверки: два отрицательных числа дают в произведении положительное, плюс остаток 1 — и всё вместе попадает точно в делимое. Отрицательный делитель меняет знак частного при обоих соглашениях, а остаток по-прежнему следует за делимым.

Ограничения

И делимое, и делитель должны быть целыми числами от −1 000 000 000 до 1 000 000 000 включительно, и делитель не может быть равен 0 ни при одном из соглашений: нет числа, которое, умноженное на 0, вернуло бы ненулевое делимое, поэтому никакая пара «частное и остаток» не удовлетворила бы проверке. Дробные числа не принимаются и не округляются: остаток — это утверждение о делении целых чисел на целые. Поле с соглашением принимает одно из двух значений, усечение или евклидово деление, и оба доступны всегда; третьего варианта нет, и страница не станет угадывать, какое из них вы имели в виду. Когда оба числа положительны, выбор ни на что не влияет, и два соглашения не расходятся ни в чём, кроме знака остатка и частного, отличающегося на единицу. При усечении остаток может быть отрицательным, и это поведение соглашения, а не ошибка. Таблица ниже зафиксирована на ±47 и ±5 и не следует за вашим вводом: она раскладывает все четыре комбинации знаков, чтобы два соглашения можно было сравнить бок о бок, а панель выше отвечает на то, что вы ввели. Все значения точны — все четыре числа целые и лежат далеко внутри диапазона, который машина хранит без потерь, — поэтому здесь ничто и никогда не округляется.

Частые вопросы

Почему у одного и того же деления два ответа?
Потому что определение говорит лишь то, что частное, умноженное на делитель, плюс остаток должно вернуть делимое, а при отрицательном делимом ему удовлетворяют и меньшее частное с отрицательным остатком, и большее частное с положительным. −47 ÷ 5 это −9 с остатком −2, когда частное усекают к нулю, и −10 с остатком 3, когда его округляют вниз. И то и другое верно, и соглашение решает, что именно вы получите.
Какое соглашение мне выбрать?
Усечение здесь вариант по умолчанию, потому что так поступает большинство языков программирования и это же большинство людей подразумевает под целочисленным делением: частное движется к нулю, а остаток берёт знак делимого. Берите евклидово деление, когда остаток обязан быть неотрицательным: модуль в математическом смысле, позиции в цикле, календарная арифметика и всё, где остаток служит индексом в повторяющемся списке. С двумя положительными числами выбор не значит ничего.
Чему равен остаток, если делитель отрицательный?
Действует то же правило, а знак частного меняется. 47 ÷ −5 при усечении даёт −9 с остатком 2, потому что остаток следует за делимым, а не за делителем. Отрицательный делитель меняет знак частного и не трогает правило знака остатка — это и показывает вторая строка таблицы.
Это то же самое, что операция по модулю?
Родственное, но не тождественное. Модуль возвращает только остаток и обычно определён так, что результат неотрицателен, а это и есть здешнее евклидово деление. Разница видна на отрицательных вводах: −47 по модулю 5 равно 3, тогда как целочисленное деление с усечением возвращает −2. Если нужен неотрицательный результат, выбирайте евклидово деление; если нужно частное, округлённое к нулю, — усечение.
Чему равен остаток, если деление выходит точным?
Нулю, при обоих соглашениях. Когда делитель укладывается целое число раз, ничего не остаётся, и проверка читается как «делитель умножить на частное равно делимое», без третьего слагаемого. Остаток 0 — это нормальный ответ: он означает, что деление было точным, а не что вывод сломался.
Почему делитель не может быть нулём?
Потому что никакие частное и остаток не удовлетворили бы проверке. Если делитель равен 0, то 0, умноженный на любое частное, даёт 0, поэтому проверка потребовала бы, чтобы остаток был равен делимому и одновременно был меньше делителя по модулю, — невозможно при ненулевом делимом, а при делимом 0 ответом было бы сразу всякое число, а не один ответ. Страница отказывает в таком вводе, вместо того чтобы вернуть что-то произвольное.

Источники

Похожие калькуляторы