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

Калькулятор по модулю

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

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

Результат

-47 ≡ 3 (mod 5)

Сравнение по модулю

Остаток
3

Остаток по модулю — это наименьший неотрицательный остаток от деления первого числа на второе, и эта страница записывает его как сравнение по модулю: -47 ≡ 3 (mod 5). Остаток всегда не меньше нуля и строго меньше модуля по величине — при любых знаках обоих входных чисел. Именно это правило и делает модульную арифметику осмысленной для отрицательных чисел. Спросите у языка программирования, чему равно -47 % 5, и ответ зависит от языка: JavaScript, C, Java и Go вернут -2, а Python вернёт 3. Математический остаток — только один из них, и это тот, который никогда не выходит отрицательным. Страница принимает два целых числа от минус одного миллиарда до одного миллиарда и печатает и остаток, и равенство, связывающее делимое, остаток и модуль. Отрицательные числа не запрещены: делимое может быть отрицательным, модуль может быть отрицательным, а делимое может быть меньше модуля по величине. Отклоняется только нулевой модуль: на нуль не делится ничто, и у mod 0 поэтому нет ответа.

Четыре сочетания знаков и сравнение, которое даёт каждое

ДелимоеМодульОстатокСравнение
-4753-47 ≡ 3 (mod 5)
-121-1 ≡ 1 (mod 2)
475247 ≡ 2 (mod 5)
47-5247 ≡ 2 (mod -5)

Прочитайте первую и третью строки вместе: делимое в одной равно -47, в другой 47, модуль в обеих 5, а остатки равны 3 и 2. Эта пара и есть суть страницы. При соглашении, которым пользуется большинство калькуляторов и языков программирования, в первой строке стояло бы -2, и то, что там стоит 3, — это и есть разница между остатком и остатком по модулю. Теперь прочитайте первую и вторую строки: делимое остаётся отрицательным, а модуль уменьшается вдвое, с 5 до 2, и остаток переходит с 3 на 1 — уменьшение модуля вдвое не уменьшает остаток вдвое, оно заново измеряет то же число по более короткому циклу. В четвёртой строке модуль равен -5 и в ответе стоит 2, ровно как в третьей строке с модулем 5: вот и вся нечувствительность к знаку в одном сравнении. Проверьте любую из четырёх, вычтя остаток из делимого: результат всегда целое кратное модуля, и именно это утверждает сравнение.

Формула

-47 ÷ 5 = -9, остаток -2 (усечение); -2 + 5 = 3, поэтому -47 mod 5 = 3 и -47 ≡ 3 (mod 5)

a
Делимое, число, которое уменьшают. Оно может быть отрицательным, и это как раз тот случай, который стоит проверить: a mod n обязан выйти неотрицательным, даже когда само a им не является, поэтому -47 должно попасть в 3, а не в -2. Принимаются целые числа от -1 000 000 000 до 1 000 000 000, и 0 — вполне допустимое делимое, остаток которого всегда равен 0
n
Модуль, число, на которое делят. Оно тоже может быть отрицательным, и остаток от этого не меняется: 47 mod -5 и 47 mod 5 дают 2, потому что утверждение «n делит a - r» и утверждение «-n делит a - r» — это одно и то же, сказанное двумя способами. Нуль — единственное отклоняемое значение, и страница печатает n ровно так, как его ввели, а не заменяет его величиной
r
Остаток по модулю, он же ответ. Это наименьшее неотрицательное число, которое можно вычесть из a и получить кратное n. Его полностью задают два условия: r не меньше 0 и r строго меньше модуля n по величине. -47 mod 5 даёт 3, потому что 3 — наименьшее неотрицательное значение, при котором -47 - 3 = -50 кратно 5
((a mod n) + |n|) mod |n|
Двухшаговый рецепт, которому следует страница, и причина, по которой второй шаг вообще нужен. Первый шаг — это то, что вычисляет большинство языков, и он может вернуть отрицательный ответ; второй шаг прибавляет модуль по величине и снова берёт остаток, что загоняет результат в неотрицательный интервал, не меняя того, от какого кратного n он отсчитывается. Именно использование величины n, а не самого n, позволяет отрицательному модулю пройти насквозь без изменений
a ≡ r (mod n)
Сравнение по модулю, первая строка панели результатов. Оно говорит, что n делит a - r нацело, и это то же самое утверждение, что и остаток, записанный отдельно, только рядом названы модуль и делимое. Знак из трёх черт и слово mod — это нотация, а не слова, поэтому они печатаются одинаково во всех языках сайта, и разделители разрядов внутрь чисел не вставляются
-47 ≡ 3 (mod 5)
Значение по умолчанию, записанное полностью. Это тот случай, который отличает данную страницу от калькулятора остатка: те же два числа дают -9 и остаток -2 при усечённом соглашении, которым пользуется четырёхоперационный калькулятор, а здесь выходит -47 ≡ 3 (mod 5). Если ввести 47 вместо -47, получится 2, а не 3: один знак минус сдвигает ответ на целый шаг по циклу

Обращайтесь к этой странице, когда ответ должен замыкаться, а не просто останавливаться. Модульная арифметика начинается с часов: 10 часов плюс 5 часов — это 3 часа, то есть 15 mod 12, и именно неотрицательность остатка делает циферблат читаемым. У работы с календарём та же форма: сотый день года или день недели, на который попадает дата, — это остаток по модулю 7. В программировании остаток по модулю проверяет делимость (a mod n равно 0, когда n делит нацело), возвращает индекс в допустимый диапазон в кольцевом буфере или хеш-таблице, удерживает счётчик цикла в заданных границах и по очереди выбирает элемент из списка. На нём построена криптография: RSA и Диффи — Хеллман это модульная арифметика на очень больших числах, и неотрицательность остатка нужна именно потому, что арифметика со знаковыми результатами была бы неоднозначной основой. Контрольные цифры — от номеров банковских счетов до ISBN — это остатки по модулю 9, 10 или 11. Когда вопрос, наоборот, звучит как «сколько раз делитель укладывается и что осталось по тому соглашению, которым пользуется мой калькулятор», лучше подходит калькулятор остатка: он показывает оба соглашения рядом. А когда вопрос в том, что у двух чисел общего, на него прямо отвечает страница о наибольшем общем делителе.

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

  1. Ловушка знака: -47 mod 5

    1. Делим как обычно и отбрасываем дробную часть: -47 ÷ 5 = -9,4, значит усечённое частное равно -9
    2. -9 × 5 = -45, и -47 - (-45) = -2, значит усечённый остаток равен -2
    3. Остаток по модулю должен быть не меньше 0, поэтому прибавляем модуль по величине: -2 + 5 = 3
    4. Проверяем, что результат попал в интервал: 0 ≤ 3 < 5, значит больше ничего поправлять не нужно
    5. Читаем сравнение на панели: -47 ≡ 3 (mod 5), то есть 5 делит -47 - 3 = -50 нацело

    Значение по умолчанию и пример, объясняющий, зачем эта страница нужна. Четырёхоперационный калькулятор и большинство языков программирования для этого деления сообщат -9 и остаток -2; этот ответ не неверен, он отвечает на иначе поставленный вопрос. Остаток здесь равен 3, потому что 3 — наименьшее неотрицательное значение, при котором разность кратна 5. Обратите внимание, что 47 mod 5 равно 2, а не -3 и не 3: сдвиг делимого на целый шаг по циклу сдвигает остаток на единицу, и два остатка отличаются ровно на 1, а не на 5.

  2. Отрицательный модуль: 47 mod -5

    1. 47 ÷ 5 = 9,4, значит 5 укладывается девять раз и 9 × 5 = 45
    2. 47 - 45 = 2, и это уже лежит в интервале 0 ≤ 2 < 5
    3. Модуль отрицательный, но делимость не смотрит на знак: -5 делит 45 нацело, значит делит нацело и 47 - 2
    4. Сравнение записывается с тем модулем, который ввели: 47 ≡ 2 (mod -5)

    Случай, показывающий, что остаток нечувствителен к знаку модуля. Замена -5 на 5 ничего не меняет в ответе, потому что -5 делит число нацело тогда же, когда его делит 5. Страница сохраняет минус в напечатанном сравнении, а не убирает его молча: переписанное -5 как 5 выглядело бы так, будто ввод отбросили. Сравните две строки справочной таблицы с делителем -5 со строками, где стоит 5: остаток сдвигает только знак делимого.

  3. Обычный случай: 1 234 mod 12

    1. 12 × 100 = 1 200, и 1 234 - 1 200 = 34, поэтому продолжаем: 12 × 2 = 24, и 34 - 24 = 10
    2. 12 × 3 = 36 превысило бы 34, поэтому частное равно 102, а в остатке остаётся 10
    3. 10 не меньше 0 и меньше 12, поэтому это уже остаток по модулю
    4. Читаем как сравнение на панели: 1234 ≡ 10 (mod 12)

    Простой случай с двумя положительными числами, где остаток по модулю и обычный остаток совпадают — ради этого он и включён. Когда оба числа положительные, согласовывать нечего, и страница делает ту же работу, что любой инструмент для остатка. Интересны строки, в которых есть минус. У этой пары есть и второе прочтение, которое стоит заметить: 1 234 mod 12 — это вопрос, на какой час попадёт длительность, когда на циферблате двенадцать часов, и 10 — вполне осмысленный час, а -2 им не был бы.

Ограничения

Модуль не может быть нулём. У деления на нуль нет ответа, поэтому нет и остатка, в том числе наименьшего неотрицательного; страница отклоняет такой ввод, а не возвращает заглушку, похожую на результат. Оба числа должны быть целыми. У дробного модуля есть собственное определение в некоторых разделах математики, но эта страница реализует не его, поэтому 47,5 отклоняется, а не округляется молча до 48 и не получает ответ как ни в чём не бывало. Величина каждого числа ограничена одним миллиардом: так все промежуточные шаги остаются в диапазоне, где число с плавающей точкой двойной точности ещё точно представляет целые, а за этой границей арифметика начала бы округлять, и ответ выглядел бы совершенно обычным, будучи неверным. Страница сообщает остаток и сравнение и ничего больше: она не даёт частного, не перечисляет другие числа, сравнимые с вашим делимым, и не выполняет модульных действий больше чем с одной парой за раз. Отрицательный модуль принимается и печатается как введён, поэтому два сравнения, говорящие одно и то же, могут выглядеть на странице по-разному: 47 ≡ 2 (mod -5) и 47 ≡ 2 (mod 5) — это одно утверждение. И наконец, справочная таблица ниже показывает четыре фиксированные пары, а не следует за вашим вводом; на введённые числа отвечает панель результатов.

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

Почему -47 mod 5 равно 3, а не -2?
Потому что остаток по модулю определён как наименьшее неотрицательное число, которое можно вычесть из делимого и получить кратное модуля. И -2, и 3 подходят в том смысле, что -47 - (-2) = -45 и -47 - 3 = -50 кратны 5, так что одна арифметика между ними не выбирает. Выбирает определение: остаток живёт в интервале от 0 до модуля, не включая его, а -2 в него не попадает. Дальше всё следует само. То, что вы получите от языка программирования, зависит от выбранного в нём соглашения, и JavaScript, C, Java и Go выбрали другое — у них знак повторяет знак делимого. Python выбрал это. Ни один из языков не сломан; они отвечают на по-разному поставленные вопросы.
Модуль может быть отрицательным?
Да, и на остаток его знак не влияет. Отрицательный модуль работает, потому что делимость не смотрит на знаки: -5 делит число нацело тогда же, когда его делит 5, поэтому множество кратных -5 — то же, что множество кратных 5, и наименьшее неотрицательное число в нём в обоих случаях одно и то же. Страница печатает модуль ровно так, как его ввели, а не заменяет -5 на 5: переписанный ввод выглядел бы так, будто знак потеряли. Поэтому 47 mod -5 равно 2 и 47 mod 5 тоже 2, а два напечатанных сравнения отличаются только минусом в одном из них.
Что будет, если ввести 0 как модуль?
Страница его отклонит. У mod 0 нет значения, которое можно сообщить: нуль делит только нуль, поэтому нет целого кратного нуля, с которым можно сравнить делимое, и нет остатка, который можно взять. Вернуть 0 или само делимое значило бы выдать что-то похожее на ответ, и оно было бы неверным для любого ввода. Отклонить ввод — честный исход. Деление на нуль не определено и во всей остальной арифметике по той же причине.
Это то же самое, что калькулятор остатка на этом сайте?
Нет, и эти двое дают разные ответы на один и тот же пример — так разница видна яснее всего. Страница остатка раскладывает два соглашения рядом и даёт вам выбрать, потому что в обращении действительно есть оба и в школе могут учить любому. Эта страница выбора не предлагает, потому что у остатка по модулю есть только одно прочтение: ответ никогда не отрицательный. Для -47, делённого на 5, страница остатка по умолчанию покажет -9 и остаток -2, а эта страница покажет сравнение -47 ≡ 3 (mod 5). Пользуйтесь той страницей, чтобы увидеть, чем два соглашения отличаются на конкретной паре чисел; пользуйтесь этой, когда нужен сам остаток по модулю.
Где остаток по модулю действительно применяется?
Везде, где счёт должен замыкаться, а не расти без конца. Циферблат — бытовой случай: двенадцать часов на циферблате означают, что через 5 часов после 10 часов будет 15 mod 12, то есть 3 часа. Дни недели работают так же по модулю 7. В программировании остаток по модулю проверяет делимость, потому что a mod n равно 0 ровно тогда, когда n делит нацело; он возвращает индекс в допустимый диапазон в кольцевом буфере или хеш-таблице, где выпавший за край индекс обязан вернуться к началу; и он удерживает счётчик цикла в заданных границах. Криптография с открытым ключом — это модульная арифметика на очень больших числах, и именно поэтому важна неотрицательность остатка: арифметика, дающая знаковые результаты, была бы неоднозначной основой.
Почему показано только сравнение, а не частное?
Потому что частное не входит в то, что сообщает остаток по модулю. Сравнение называет делимое, остаток и модуль, и утверждает оно, что модуль делит разность первых двух. Это утверждение полно и без частного: частное — это то, что получают, спрашивая, сколько целых раз модуль укладывается, а такой вопрос принадлежит делению в столбик. Если частное нужно рядом, его сообщают и калькулятор остатка, и калькулятор деления в столбик. Сам остаток печатается и отдельно, второй строкой панели результатов, так что читателю, которому нужно только число, не приходится вычитывать его из предложения.

Источники

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