Спенсер, есть простой способ думать о модах (как это определено в математике, а не в программировании). Это на самом деле довольно просто:
Взять все целые числа:
...- 9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8 , 9 ...
Теперь давайте подумаем о коэффициентах 3 (если вы рассматриваете мод 3 ). Давайте начнем с 0 и положительных кратных 3:
...- 9, -8, -7, -6, -5, -4, -3, -2, -1, 0 , 1, 2, 3 , 4, 5, 6 , 7, 8, 9 ...
Это все числа, которые имеют остаток от нуля при делении на 3, т. Е. Это все те, которые имеют нулевое значение.
Теперь давайте сместим всю эту группу на единицу.
...- 9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1 , 2, 3, 4 , 5, 6, 7 , 8, 9 ...
Это все числа, которые имеют остаток от 1 при делении на 3, т. Е. Все те, которые имеют значение 1.
Теперь давайте снова сместим всю эту группу на единицу.
...- 9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2 , 3, 4, 5 , 6, 7, 8 , 9 ...
Это все числа, которые имеют остаток 2 при делении на 3, т. Е. Это все те, которые имеют значение 2.
Вы заметите, что в каждом из этих случаев выбранные числа разнесены на 3. Мы всегда берем каждое третье число, потому что мы рассматриваем по модулю 3. (Если бы мы делали мод 5, мы бы взяли каждое пятое число).
Итак, вы можете перенести эту модель назад в отрицательные числа. Просто оставьте интервал 3. Вы получите эти три конгруэнтных класса (специальный тип классов эквивалентности , как их называют в математике):
... -9 , -8, -7, -6 , -5, -4, -3 , -2, -1 , 0 , 1, 2, 3 , 4, 5, 6 , 7, 8, 9 ...
...- 9, -8 , -7, -6, -5 , -4, -3, -2 , -1 , 0, 1 , 2, 3, 4 , 5, 6, 7 , 8, 9 ...
...- 9, -8, -7 , -6, -5, -4 , -3, -2, -1, 0, 1, 2 , 3, 4, 5 , 6, 7, 8 , 9 ...
Стандартное математическое представление всех этих эквивалентных чисел состоит в использовании вычетов класса, что просто означает наименьшее неотрицательное число.
Поэтому обычно, когда я думаю о модах и имею дело с отрицательным числом, я просто думаю о последовательном добавлении числа по модулю снова и снова, пока не получу первый 0 или положительное число:
Если мы делаем мод 3, то с -1, просто добавьте 3 один раз: -1 + 3 = 2.
С -4, добавьте 3 дважды, потому что одного недостаточно. Если мы добавим +3 один раз, мы получим -4 + 3 = -1, что все еще отрицательно. Итак, мы снова добавим +3: -1 + 3 = 2.
Давайте попробуем большее отрицательное число, например -23. Если вы продолжите добавлять +3, вы получите:
-23, -20, -17, -14, -11, -8, -5, -2, 1. Мы получили положительное число, поэтому мы останавливаемся. Остаток равен 1, и именно эту форму обычно используют математики.