Sono imbarazzato nel porre una domanda così semplice. Il mio mandato non inizia per altre due settimane, quindi non posso chiedere a un professore e la suspense mi ucciderebbe.
Perché 2 mod 4 = 2?
Sono imbarazzato nel porre una domanda così semplice. Il mio mandato non inizia per altre due settimane, quindi non posso chiedere a un professore e la suspense mi ucciderebbe.
Perché 2 mod 4 = 2?
Risposte:
Modulo (mod,%) è l'operatore Remainder.
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)
Molto più facile se usi le banane e un gruppo di persone.
Supponi di avere 1 banana e un gruppo di 6 persone, questo che esprimeresti: 1 mod 6
/ 1 % 6
/ 1 modulo 6
.
Hai bisogno di 6 banane per ogni persona del gruppo per essere ben nutrita e felice.
Quindi, se hai 1 banana e devi condividerla con 6 persone, ma puoi condividere solo se hai 1 banana per ogni membro del gruppo, ovvero 6 persone, avrai 1 banana (resto, non condiviso su nessuno in gruppo), lo stesso vale per 2 banane. Quindi avrai 2 banane come resto (nulla è condiviso).
Ma quando ottieni 6 banane, dovresti essere felice, perché poi c'è 1 banana per ogni membro in un gruppo di 6 persone, e il resto è 0 o nessuna banana rimasta quando hai condiviso tutte e 6 le banane su 6 persone.
Ora, per 7 banane e 6 persone in gruppo, allora avrai 7 mod 6 = 1
, questo perché hai dato a 6 persone 1 banana ciascuna e 1 banana è il resto.
Per 12 mod 6
o 12 banane condivise su 6 persone, ognuna avrà due banane e il resto sarà quindi 0.
Anche io ero confuso su questo, solo pochi minuti fa. Poi ho fatto la divisione a lungo su un pezzo di carta e ha avuto senso:
Questo è quanto il computer prenderà questo problema. Il computer si ferma qui e restituisce il 2, il che ha senso poiché è quello che "%" (mod) chiede.
Siamo stati addestrati a inserire il decimale e andare avanti, motivo per cui all'inizio può essere controintuitivo.
Qualcuno mi ha contattato e mi ha chiesto di spiegare in modo più dettagliato la mia risposta nel commento della domanda. Quindi ecco cosa ho risposto a quella persona nel caso in cui possa aiutare chiunque altro:
L'operazione modulo ti dà il resto della disattivazione euclidea (che funziona solo con numeri interi, non numeri reali). Se hai A tale che A = B * C + D (con D <B), il quoziente della divisione euclidea di A per B è C, e il resto è D. Se dividi 2 per 4, il quoziente è 0 e il resto è 2.
Supponiamo di avere oggetti A (che non puoi tagliare). E vuoi distribuire la stessa quantità di quegli oggetti a B persone. Finché hai più di oggetti B, dai a ciascuno di essi 1 e ripeti. Quando ti rimangono meno di B oggetti, ti fermi e mantieni gli oggetti rimanenti. Il numero di volte in cui hai ripetuto l'operazione, chiamiamo quel numero C, è il quoziente. Il numero di oggetti che conservi alla fine, chiamiamolo D, è il resto.
Se hai 2 oggetti e 4 persone. Hai già meno di 4 oggetti. Quindi ogni persona ottiene 0 oggetti e tu ne mantieni 2.
Ecco perché 2 modulo 4 è 2.
mod indica il alesatore quando diviso per. Quindi 2 diviso 4 è 0 con 2 rimanenti. Pertanto 2 mod 4 è 2.
Modulo è il resto, espresso come un numero intero, di un'espressione di divisione matematica.
Quindi, supponiamo che tu abbia un pixel su uno schermo in posizione 90 in cui lo schermo è largo 100 pixel e ne aggiungi 20, si avvolgerà in posizione 10. Perché ... perché 90 + 20 = 110 quindi 110% 100 = 10.
Per me lo capisco, ritengo che il modulo sia la rappresentazione intera del numero frazionario. Inoltre, se esegui l'espressione all'indietro ed elabori il resto come un numero frazionario e poi lo aggiungi al divisore, otterrai la risposta originale.
Esempi:
100
(A) --- = 14 mod 2
7
123
(B) --- = 8 mod 3
15
3
(C) --- = 0 mod 3
4
Invertito progettato per:
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
Penso che ti stai confondendo su come viene letta l'equazione del modulo.
Quando scriviamo un'equazione di divisione come 2/4
che stiamo dividendo 2 per 4.
Quando viene scritta un'equazione del modulo come quella 2 % 4
che stiamo dividendo 2 by 4
(pensate 2 su 4) e restituiamo il resto.
MOD è l'operatore residuo. Ecco perché 2 mod 4 fornisce 2 come resto. 4 * 0 = 0 e quindi 2-0 = 2. Per rendere più chiaro, prova a fare lo stesso con 6 mod 4 o 8 mod 3.
Questo è l'algoritmo di Euclide.
per esempio
a mod b = k * b + c => a mod b = c, dove k è un numero intero e c è la risposta
4 mod 2 = 2 * 2 + 0 => 4 mod 2 = 0
27 mod 5 = 5 * 5 + 2 => 27 mod 5 = 2
quindi la tua risposta è
2 mod 4 = 0 * 4 + 2 => 2 mod 4 = 2
Per:
2 mod 4
Possiamo usare questa piccola formula che mi è venuta in mente dopo aver pensato un po ', forse è già definita da qualche parte che non conosco ma funziona per me ed è davvero utile.
A mod B = C
dove C è la risposta
K * B - A = |C|
dove K è quante volte B si inserisce in A
2 mod 4
sarebbe:
0 * 4 - 2 = |C|
C = |-2| => 2
Spero che funzioni per te :)
Per rispondere a un modulo x % y
, fai due domande:
A- Quante volte y
entra x
senza resto? Per il 2% 4 questo è 0.
B- Quanto devi aggiungere per tornare da quello a x
? Per tornare da 0 a 2 avrai bisogno di 2-0, cioè 2.
Questi possono essere riassunti in una sola domanda in questo modo: quanto dovrai aggiungere al risultato intero della divisione di x
per y
, per tornare a x
?
Per numero intero si intende solo numeri interi e non frazioni di alcun genere.
Un resto di divisione frazionaria (ad es. 283849) non è di interesse in modulo perché modulo si occupa solo di numeri interi.
Per un modo visivo di pensarci, immagina un quadrante di orologio che, nel tuo esempio particolare, va solo a 4 anziché a 12. Se inizi a 4 sull'orologio (che è come iniziare da zero) e lo fai in senso orario per 2 "ore", atterri su 2, proprio come girandoti in senso orario per 6 "ore" ti atterrerebbero anche su 2 (6 mod 4 == 2 proprio come 2 mod 4 == 2).
Questo potrebbe essere un buon momento per menzionare la funzione modr (). Restituisce sia le parti intere che quelle rimanenti di una divisione.
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
.