Мне стыдно задать такой простой вопрос. Мой семестр не начинается еще на две недели, поэтому я не могу попросить профессора, и неизвестность убьет меня.
Почему 2 мод 4 = 2?
Мне стыдно задать такой простой вопрос. Мой семестр не начинается еще на две недели, поэтому я не могу попросить профессора, и неизвестность убьет меня.
Почему 2 мод 4 = 2?
Ответы:
Modulo (mod,%) является оператором остатка.
2%2 = 0 (2/2 = 1 remainder 0)
1%2 = 1 (1/2 = 0 remainder 1)
4%2 = 0 (4/2 = 2 remainder 0)
5%2 = 1 (5/2 = 2 remainder 1)
Гораздо проще, если вы используете бананы и группу людей.
Скажем, у вас есть 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.
Меня это тоже смутило всего несколько минут назад. Затем я сделал разделение длинной рукой на листе бумаги, и это имело смысл:
Это так далеко, как компьютер собирается решить эту проблему. Компьютер останавливается и возвращает 2, что имеет смысл, так как это то, что «%» (мод) просит.
Мы были обучены вводить десятичную дробь и продолжать движение, поэтому поначалу это может быть нелогичным.
Кто-то связался со мной и попросил объяснить более подробно мой ответ в комментарии к вопросу. Итак, вот что я ответил этому человеку в случае, если он может помочь кому-то еще:
Операция по модулю дает вам остаток от евклидова деления (который работает только с целыми числами, а не с действительными числами). Если у вас есть 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.
Оператор по модулю вычисляет остаток от деления двух целочисленных операндов. Вот несколько примеров:
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)
мод означает напоминание при делении на. Таким образом, 2, деленное на 4 - это 0 с 2 оставшимися. Поэтому 2 mod 4 равно 2.
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/4
мы делим 2 на 4.
Когда пишется уравнение по модулю, такое как 2 % 4
мы делим 2 by 4
(подумайте 2 над 4) и возвращаем остаток.
Мод является оператором остатка. Вот почему 2 мод 4 дает 2 в качестве остатка. 4 * 0 = 0, а затем 2-0 = 2. Чтобы сделать это более понятным, попробуйте сделать то же самое с 6 мод 4 или 8 мод 3.
Это алгоритм Евклида.
например
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
Для:
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
Надеюсь, это работает для вас :)
Ответить по модулю x % y
, вы задаете два вопроса:
A- Сколько раз y
уходит x
без остатка? Для 2% 4 это 0.
B- Сколько вам нужно добавить, чтобы получить от этого обратно x
? Чтобы вернуться от 0 к 2, вам нужно 2-0, то есть 2.
Их можно суммировать в одном вопросе, например, так: Сколько вам нужно добавить к целочисленному результату деления x
на y
, чтобы вернуться к нему x
?
Под целочисленным пониманием подразумеваются только целые числа, а не дроби, представляющие интерес.
Остаток от дробного деления (например,. 283849) не представляет интереса по модулю, поскольку по модулю имеет дело только с целыми числами.
Для наглядного представления об этом представьте себе циферблат, который, в вашем конкретном примере, идет только к 4 вместо 12. Если вы начинаете с 4 на часах (что похоже на начало с нуля) и вращаетесь по часовой стрелке для 2 часа, вы приземляетесь на 2, точно так же, как если вы обойдете его по часовой стрелке в течение 6 часов, вы также попадете на 2 (6 мод 4 == 2, как 2 мод 4 == 2).
Это может быть хорошее время для упоминания функции 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")
2 = 0 * 4 + 2
.