Мені соромно задавати таке просте запитання. Мій термін не починається ще два тижні, тому я не можу запитати у професора, і суспензія вбила б мене.
Чому 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 бананів, то ви повинні бути щасливими, адже тоді на кожного члена в групі з 6 чоловік є 1 банан, а решта - 0 або не залишилося бананів, коли ви розділили всі 6 бананів на 6 людей.
Тепер для 7 бананів та 6 людей у групі ви тоді матимете 7 mod 6 = 1
це, тому що ви дали 6 людям по 1 банану кожен, а 1 банан - залишок.
Для 12 mod 6
або 12 бананів, які діляться на 6 осіб, кожен матиме два банани, а решта - 0.
Мене з цим також бентежило лише кілька хвилин тому. Потім я зробив поділ довгорукою на аркуші паперу, і це мало сенс:
Ось наскільки комп’ютер збирається вирішити цю проблему. Комп'ютер зупиняється там і повертає 2, що має сенс, оскільки саме про це "%" (mod) просить.
Нас навчили вводити десяткову і продовжувати, тому це спочатку може бути контрутивним.
Хтось зв’язався зі мною і попросив пояснити більш детально мою відповідь у коментарі запитання. Отже, ось що я відповів цій людині, якщо вона може допомогти будь-кому іншому:
Модульна операція дає вам залишок евклідової дивізії (яка працює лише з цілими, а не дійсними числами). Якщо у вас A такий, що A = B * C + D (з D <B), то коефіцієнт евклідового поділу A на B дорівнює C, а решта - D. Якщо розділити 2 на 4, коефіцієнт дорівнює 0, а решта - 2.
Припустимо, у вас є A об’єкти (які ви не можете вирізати). І ви хочете розподілити однакову кількість цих об'єктів для людей B. Поки у вас більше B об'єктів, ви даєте кожному з них 1 і повторюєте. Якщо у вас залишилося менше B об’єктів, ви зупиняєтесь і зберігаєте решта об'єктів. Кількість часу, яке ви повторили операцію, назвемо це число C - коефіцієнт. Кількість об'єктів, які ви зберігаєте в кінці, назвемо це D, залишок.
Якщо у вас є 2 об’єкти і 4 людини. У вас вже менше 4 об’єктів. Отже кожна людина отримує 0 об’єктів, а ви зберігаєте 2.
Тому 2 модуль 4 - це 2.
mod означає нагадувач при діленні на. Таким чином, 2, розділене на 4, дорівнює 0, залишилося 2. Тому 2 мод 4 є 2.
Модуло - це залишок, виражений у вигляді цілого числа виразу математичного поділу.
Отже, скажімо, у вас є піксель на екрані в положенні 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) і повернемо решту.
MOD є оператором, що залишився. Ось чому 2 мод 4 дає 2 як залишок. 4 * 0 = 0, а потім 2-0 = 2. Щоб зробити це більш зрозумілим, спробуйте зробити те ж саме з 6 mod 4 або 8 mod 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
де С - відповідь
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
.