Чому 2 мод 4 = 2?


150

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

Чому 2 мод 4 = 2?


45
Тому що 2 = 0 * 4 + 2.
p4bl0


1
У x / y результати складаються з цілої частини та частини дробу. Якщо помножити частку дробу на дільник, ви отримаєте решту. І x = ціла частина y + залишок (тобто частина дробу y). У цьому випадку частина Integer дорівнює 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 бананів, то ви повинні бути щасливими, адже тоді на кожного члена в групі з 6 чоловік є 1 банан, а решта - 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, що має сенс, оскільки саме про це "%" (mod) просить.

Нас навчили вводити десяткову і продовжувати, тому це спочатку може бути контрутивним.


7

Хтось зв’язався зі мною і попросив пояснити більш детально мою відповідь у коментарі запитання. Отже, ось що я відповів цій людині, якщо вона може допомогти будь-кому іншому:

Модульна операція дає вам залишок евклідової дивізії (яка працює лише з цілими, а не дійсними числами). Якщо у вас 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.


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

mod означає нагадувач при діленні на. Таким чином, 2, розділене на 4, дорівнює 0, залишилося 2. Тому 2 мод 4 є 2.


4

Модуло - це залишок, виражений у вигляді цілого числа виразу математичного поділу.

Отже, скажімо, у вас є піксель на екрані в положенні 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, залишившись 2 або залишившись. Модуло - це лише залишок після ділення числа.


1

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

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

Коли пишеться рівняння модуля, таке, як 2 % 4ми ділимо 2 by 4(подумайте 2 над 4) і повернемо решту.


1

MOD є оператором, що залишився. Ось чому 2 мод 4 дає 2 як залишок. 4 * 0 = 0, а потім 2-0 = 2. Щоб зробити це більш зрозумілим, спробуйте зробити те ж саме з 6 mod 4 або 8 mod 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 де С - відповідь

K * B - A = |C| де K - скільки разів B вписується в A

2 mod 4 було б:

0 * 4 - 2 = |C|

C = |-2| => 2

Сподіваюся, це працює для вас :)


1

Операція Mod працює з нагадуванням.

Це називається модульною арифметикою.

 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.