Почему 2 мод 4 = 2?


150

Мне стыдно задать такой простой вопрос. Мой семестр не начинается еще на две недели, поэтому я не могу попросить профессора, и неизвестность убьет меня.

Почему 2 мод 4 = 2?


45
Потому что 2 = 0 * 4 + 2.
p4bl0


1
В x / y результаты состоят из целой части и дробной части. Если вы умножите дробную часть на делитель, вы получите остаток. И x = целочисленная часть y + остаток (т. Е. Дробная часть y). В этом случае целочисленная часть равна 0, а остаток равен 2.
mshsayem

76
рад, что у вас хватило смелости задать этот вопрос.
проложить

по модулю гораздо больше, чем деление двух чисел.
holex

Ответы:


151

Мод просто означает, что вы берете остаток после выполнения деления. Так как 4 входит в 2 нулевых раза, у вас останется 2.


95

По модулю это остаток, а не деление.

2 / 4 = 0R2
2 % 4 = 2

Знак %часто используется для оператора по модулю вместо слова mod.

Для x % 4, вы получите следующую таблицу (для 1-10)

 x x%4
------
 1  1
 2  2
 3  3
 4  0
 5  1
 6  2
 7  3
 8  0
 9  1
10  2


13

Гораздо проще, если вы используете бананы и группу людей.

Скажем, у вас есть 1 банан и группа из 6 человек, это вы бы выразили: 1 mod 6/ 1 % 6/ 1 modulo 6.

Вам нужно 6 бананов для каждого человека в группе, чтобы быть сытым и счастливым.

Таким образом, если у вас есть 1 банан и вам нужно поделиться им с 6 людьми, но вы можете поделиться им, только если у вас есть 1 банан для каждого члена группы, то есть 6 человек, тогда у вас будет 1 банан (остаток, который не будет разглашен никому в группа), то же самое касается 2 бананов. Тогда у вас будет 2 банана в качестве остатка (ничего не передается).

Но когда вы получаете 6 бананов, тогда вы должны быть счастливы, потому что тогда есть 1 банан для каждого члена в группе из 6 человек, а остаток равен 0 или не осталось бананов, когда вы разделили все 6 бананов на 6 человек.

Теперь, для 7 бананов и 6 человек в группе, у вас тогда будет 7 mod 6 = 1 , потому что вы дали 6 человек 1 банан каждый, а 1 банан - остаток.

Для 12 mod 6или 12 бананов, разделенных на 6 человек, у каждого будет по два банана, а остаток равен 0.



8

Меня это тоже смутило всего несколько минут назад. Затем я сделал разделение длинной рукой на листе бумаги, и это имело смысл:

  • 4 входит в 2 ноль раз.
  • 4 раза 0 - это 0.
  • Вы помещаете этот ноль в 2 и вычитаете, что оставляет 2.

Это так далеко, как компьютер собирается решить эту проблему. Компьютер останавливается и возвращает 2, что имеет смысл, так как это то, что «%» (мод) просит.

Мы были обучены вводить десятичную дробь и продолжать движение, поэтому поначалу это может быть нелогичным.


7

Кто-то связался со мной и попросил объяснить более подробно мой ответ в комментарии к вопросу. Итак, вот что я ответил этому человеку в случае, если он может помочь кому-то еще:

Операция по модулю дает вам остаток от евклидова деления (который работает только с целыми числами, а не с действительными числами). Если у вас есть A такое, что A = B * C + D (с D <B), то частное евклидова деления A на B равно C, а остаток равен D. Если вы поделите 2 на 4, частное равно 0 и остаток 2.

Предположим, у вас есть объекты А (которые вы не можете разрезать). И вы хотите распределить такое же количество этих объектов среди людей. Пока у вас больше, чем B объектов, вы даете каждому из них 1 и повторяете. Когда у вас осталось менее B объектов, вы останавливаетесь и сохраняете оставшиеся объекты. Число раз, когда вы повторили операцию, давайте назовем это число C, это частное. Количество объектов, которые вы держите в конце, назовем это D, является остатком.

Если у вас есть 2 объекта и 4 человека. У вас уже есть менее 4 объектов. Таким образом, каждый человек получает 0 объектов, а вы оставляете 2.

Вот почему 2 по модулю 4 равно 2.


5

Оператор по модулю вычисляет остаток от деления двух целочисленных операндов. Вот несколько примеров:

23 % 10 evaluates to 3 (because 23/10 is 2 with a remainder of 3)
50 % 50 evaluates to 0 (50/50 is 1 with a remainder of 0)
9 % 100 evaluates to 9 (9/100 is 0 with a remainder of 9)

4

мод означает напоминание при делении на. Таким образом, 2, деленное на 4 - это 0 с 2 оставшимися. Поэтому 2 mod 4 равно 2.


4

Modulo - это остаток от выражения математического деления в виде целого числа.

Итак, предположим, что у вас есть пиксель на экране в позиции 90, где экран имеет ширину 100 пикселей и добавьте 20, он переместится в позицию 10. Почему ... потому что 90 + 20 = 110, поэтому 110% 100 = 10.

Для меня, чтобы понять это, я считаю, что по модулю целое представление дробного числа. Более того, если вы сделаете выражение в обратном порядке и обработаете остаток как дробное число, а затем добавите к делителю, он даст вам ваш первоначальный ответ.

Примеры:

    100
(A) ---  =  14 mod 2
     7

    123
(B) ---  =  8 mod 3
     15

     3
(C) ---  =  0 mod 3
     4

Реверс разработан для:

                        2      14(7)    2       98    2     100
 (A) 14 mod 2  =  14 + ---  =  ----- + ---  =  --- + ---  = ---
                        7        7      7       7     7      7

                      3      8(15)    3      120    3      123
 (B) 8 mod 3  =  8 + ---  =  ----- + ---  =  --- + ---  =  ---
                      15       15     15      15    15      15

                      3       3
 (B) 0 mod 3  =  0 + ---  =  ---
                      4       4

2

Когда вы делите 2 на 4, вы получаете 0 с двумя оставшимися или оставшимися. По модулю это только остаток от деления числа.


1

Я думаю, вы запутались из-за того, как читается уравнение по модулю.

Когда мы пишем уравнение деления, такое как 2/4 мы делим 2 на 4.

Когда пишется уравнение по модулю, такое как 2 % 4мы делим 2 by 4(подумайте 2 над 4) и возвращаем остаток.


1

Мод является оператором остатка. Вот почему 2 мод 4 дает 2 в качестве остатка. 4 * 0 = 0, а затем 2-0 = 2. Чтобы сделать это более понятным, попробуйте сделать то же самое с 6 мод 4 или 8 мод 3.


1

Это алгоритм Евклида.

например

a mod b = k * b + c => a mod b = c, где k - целое число, а c - ответ

4 мод 2 = 2 * 2 + 0 => 4 мод 2 = 0

27 мод 5 = 5 * 5 + 2 => 27 мод 5 = 2

так что ваш ответ

2 мод 4 = 0 * 4 + 2 => 2 мод 4 = 2


1

Для:

2 mod 4

Мы можем использовать эту небольшую формулу, которую я придумал, немного подумав, может быть, она уже определена где-то, чего я не знаю, но работает для меня, и это действительно полезно.

A mod B = C где C ответ

K * B - A = |C| где K сколько раз B помещается в A

2 mod 4 было бы:

0 * 4 - 2 = |C|

C = |-2| => 2

Надеюсь, это работает для вас :)


1

Работа мода работает с напоминанием.

Это называется модульной арифметикой.

 a==b(mod m) 
 then m|(a-b)
 a-b=km 
 a=b+km
 So, 2=2+0*4

1

Ответить по модулю x % y , вы задаете два вопроса:

A- Сколько раз yуходит xбез остатка? Для 2% 4 это 0.

B- Сколько вам нужно добавить, чтобы получить от этого обратно x? Чтобы вернуться от 0 к 2, вам нужно 2-0, то есть 2.

Их можно суммировать в одном вопросе, например, так: Сколько вам нужно добавить к целочисленному результату деления xна y, чтобы вернуться к нему x?

Под целочисленным пониманием подразумеваются только целые числа, а не дроби, представляющие интерес.

Остаток от дробного деления (например,. 283849) не представляет интереса по модулю, поскольку по модулю имеет дело только с целыми числами.


0

Для наглядного представления об этом представьте себе циферблат, который, в вашем конкретном примере, идет только к 4 вместо 12. Если вы начинаете с 4 на часах (что похоже на начало с нуля) и вращаетесь по часовой стрелке для 2 часа, вы приземляетесь на 2, точно так же, как если вы обойдете его по часовой стрелке в течение 6 часов, вы также попадете на 2 (6 мод 4 == 2, как 2 мод 4 == 2).


6
Это на самом деле довольно запутанно.
Джо Филлипс

@ do3boy: идея циферблата - очень простой и легкий способ точно описать факт по модулю. за исключением того, что было бы проще использовать 24-часовой формат для его объяснения, а не изменять количество доступных позиций.
Atmocreations

0

Это может быть хорошее время для упоминания функции modr (). Возвращает как целую, так и оставшуюся часть деления.

print("\n 17 // 3 =",17//3," # Does the same thing as int(17/3)")
print(" 17 %  3 =",17%3," # Modulo division gives the remainder.")
whole, remain = divmod(17,3)
print(" divmod(17,3) returns ->",divmod(17,3),end="")
print(" because 3 goes into 17,",whole,"times with a remainder of",remain,end=".\n\n")
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.