Je suis gêné de poser une question aussi simple. Mon mandat ne commence pas avant deux semaines de plus, donc je ne peux pas demander à un professeur, et le suspense me tuerait.
Pourquoi 2 mod 4 = 2?
Je suis gêné de poser une question aussi simple. Mon mandat ne commence pas avant deux semaines de plus, donc je ne peux pas demander à un professeur, et le suspense me tuerait.
Pourquoi 2 mod 4 = 2?
Réponses:
Modulo (mod,%) est l'opérateur Reste.
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)
Beaucoup plus facile si vous utilisez des bananes et un groupe de personnes.
Disons que vous avez 1 banane et un groupe de 6 personnes, vous exprimeriez ceci: 1 mod 6
/ 1 % 6
/ 1 modulo 6
.
Vous avez besoin de 6 bananes pour chaque personne du groupe pour être bien nourri et heureux.
Donc, si vous avez ensuite 1 banane et que vous avez besoin de la partager avec 6 personnes, mais que vous ne pouvez la partager que si vous avez 1 banane pour chaque membre du groupe, soit 6 personnes, alors vous aurez 1 banane (le reste, non partagé avec personne dans groupe), il en va de même pour 2 bananes. Ensuite, vous aurez 2 bananes comme reste (rien n'est partagé).
Mais quand vous obtenez 6 bananes, alors vous devriez être heureux, car alors il y a 1 banane pour chaque membre dans un groupe de 6 personnes, et le reste est de 0 ou plus de bananes lorsque vous avez partagé les 6 bananes sur 6 personnes.
Maintenant, pour 7 bananes et 6 personnes en groupe, vous aurez alors 7 mod 6 = 1
, ceci parce que vous avez donné à 6 personnes 1 banane chacune, et 1 banane est le reste.
Pour 12 mod 6
ou 12 bananes partagées sur 6 personnes, chacune aura deux bananes, et le reste vaut alors 0.
J'étais aussi confus à ce sujet, il y a seulement quelques minutes. Ensuite, j'ai fait la division à la main sur un morceau de papier et cela avait du sens:
C'est aussi loin que l'ordinateur va prendre ce problème. L'ordinateur s'arrête là et renvoie le 2, ce qui a du sens puisque c'est ce que "%" (mod) demande.
Nous avons été formés pour mettre la décimale et continuer, c'est pourquoi cela peut être contre-intuitif au début.
Quelqu'un m'a contacté et m'a demandé d'expliquer plus en détail ma réponse dans le commentaire de la question. Voici donc ce que j'ai répondu à cette personne au cas où cela pourrait aider quelqu'un d'autre:
L'opération modulo vous donne le reste de la disivion euclidienne (qui ne fonctionne qu'avec des nombres entiers, pas des nombres réels). Si vous avez A tel que A = B * C + D (avec D <B), alors le quotient de la division euclidienne de A par B est C, et le reste est D. Si vous divisez 2 par 4, le quotient est 0 et le reste est 2.
Supposons que vous ayez des objets A (que vous ne pouvez pas couper). Et vous voulez distribuer la même quantité de ces objets aux personnes B. Tant que vous avez plus de B objets, vous donnez à chacun d'eux 1 et répétez. Lorsqu'il vous reste moins de B objets, vous arrêtez et conservez les objets restants. Le nombre de fois que vous avez répété l'opération, appelons ce nombre C, est le quotient. Le nombre d'objets que vous gardez à la fin, appelons-le D, est le reste.
Si vous avez 2 objets et 4 personnes. Vous avez déjà moins de 4 objets. Ainsi, chaque personne reçoit 0 objet et vous en gardez 2.
C'est pourquoi 2 modulo 4 est 2.
L'opérateur modulo évalue le reste de la division des deux opérandes entiers. Voici quelques exemples:
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)
mod signifie l'alésoir lorsqu'il est divisé par. Donc 2 divisé par 4 est 0 avec 2 restants. Donc 2 mod 4 est 2.
Modulo est le reste, exprimé sous forme d'entier, d'une expression de division mathématique.
Donc, disons que vous avez un pixel sur un écran à la position 90 où l'écran fait 100 pixels de large et ajouter 20, il s'enroulera en position 10. Pourquoi ... parce que 90 + 20 = 110 donc 110% 100 = 10.
Pour que je le comprenne, je considère que le modulo est la représentation entière du nombre fractionnaire. De plus, si vous faites l'expression à l'envers et traitez le reste comme un nombre fractionnaire, puis ajouté au diviseur, cela vous donnera votre réponse originale.
Exemples:
100
(A) --- = 14 mod 2
7
123
(B) --- = 8 mod 3
15
3
(C) --- = 0 mod 3
4
Inversé conçu pour:
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
Je pense que vous êtes confus sur la façon dont l'équation modulo est lue.
Lorsque nous écrivons une équation de division telle que 2/4
nous divisons 2 par 4.
Lorsqu'une équation modulo est écrite, comme si 2 % 4
nous divisons 2 by 4
(pensez à 2 sur 4) et renvoyez le reste.
MOD est l'opérateur de reste. C'est pourquoi 2 mod 4 donne 2 comme reste. 4 * 0 = 0 puis 2-0 = 2. Pour être plus clair, essayez de faire de même avec 6 mod 4 ou 8 mod 3.
C'est l'algorithme Euclid.
par exemple
a mod b = k * b + c => a mod b = c, où k est un entier et c est la réponse
4 mod 2 = 2 * 2 + 0 => 4 mod 2 = 0
27 mod 5 = 5 * 5 + 2 => 27 mod 5 = 2
donc ta réponse est
2 mod 4 = 0 * 4 + 2 => 2 mod 4 = 2
Pour:
2 mod 4
Nous pouvons utiliser cette petite formule que j'ai trouvée après avoir réfléchi un peu, peut-être qu'elle est déjà définie quelque part que je ne sais pas mais fonctionne pour moi, et c'est vraiment utile.
A mod B = C
où C est la réponse
K * B - A = |C|
où K est le nombre de fois que B tient dans A
2 mod 4
serait:
0 * 4 - 2 = |C|
C = |-2| => 2
J'espère que ça marche pour toi :)
Pour répondre à un modulo x % y
, vous posez deux questions:
A- Combien de fois y
entre x
sans reste? Pour 2% 4 c'est 0.
B- Combien avez-vous besoin d'ajouter pour en revenir x
? Pour passer de 0 à 2, vous aurez besoin de 2-0, soit 2.
Celles-ci peuvent être résumées en une question comme ceci: combien devrez-vous ajouter au résultat entier de la division de x
par y
, pour revenir x
?
Par integer-ish, on entend que seuls les nombres entiers et non les fractions sont intéressants.
Un reste de division fractionnaire (par exemple .283849) n'est pas intéressant dans modulo car modulo ne traite que des nombres entiers.
Pour une façon visuelle d'y penser, imaginez un cadran d'horloge qui, dans votre exemple particulier, ne va qu'à 4 au lieu de 12. Si vous commencez à 4 sur l'horloge (ce qui revient à commencer à zéro) et faites le tour dans le sens des aiguilles d'une montre pour 2 "heures", vous atterrissez sur 2, tout comme le contourner dans le sens des aiguilles d'une montre pendant 6 "heures" vous atterrirait également sur 2 (6 mod 4 == 2 tout comme 2 mod 4 == 2).
Cela pourrait être le bon moment pour mentionner la fonction modr (). Il renvoie à la fois la totalité et les parties restantes d'une division.
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
.