web-dev-qa-db-fra.com

Comment fonctionne une opération modulo quand le premier nombre est plus petit?

Je m'embrouille avec l'opération modulo en python et je comprends que cela va cracher le reste.

Mais que se passe-t-il si le premier nombre est plus petit que le second?

par exemple

2% 5 la réponse est 2.

Comment ça marche?

2/5 = .4

35
Pete

Est-ce que cela aide

22  % 5 = 2 
17  % 5 = 2 
12  % 5 = 2 
7   % 5 = 2 
2   % 5 = 2

Peut être ça

22 / 5 = 4 + 2/5
17 / 5 = 3 + 2/5
12 / 5 = 2 + 2/5
7  / 5 = 1 + 2/5
2  / 5 = 0 + 2/5
42
jrhicks

cinq va dans 2 fois zéro. 

5 * 0 = 0

2-0 = 2.

la réponse est 2

26
MedicineMan

2 divisé par 5 (division entière) est égal à 0 avec un reste de 2.

15
qpingu

2 = 0 x 5 + 2

11
Pascal Thivent

par exemple, 2% 5, la réponse est 2. Comment ça marche? 2/5 = .4!

Modulo produit intrinsèquement un résultat entier, alors que la division peut être une opération entière ou à virgule flottante. Votre observation que 2/5 est égal à 0,4 indique que vous pensez en termes de virgule flottante. Dans ce cas, le .4 lui-mêmeestle reste, exprimé différemment. La partie intégrale de "0.4" est le "0" et la partie restante est ".4". Le reste d'une opération de division entière est exactement la même chose que la partie fractionnelle (ou "décimale", en termes familiers) d'une opération à virgule flottante, mais simplement exprimée différemment.

La partie fractionnaire de votre exemple, 0,4, peut être exprimée en 0,4 ou en 2/5 (deux cinquièmes); de toute façon c'est la même chose. Notez que lorsqu'il est écrit 2/5, le dénominateur (diviseur) de la partie fractionnaire est le même que le dénominateur (diviseur) du problème initial, alors que le numérateur (dividende) de la partie fractionnaire est ce que l'on appelle le "reste" en division entière. Quelle que soit la façon dont vous le regardez, la partiefractionaledu quotient et lerestereprésentent la même chose (la partiedu dividende qui ne peut pas être égale divisé par le diviseur), juste exprimé différemment.

9
phonetagger

C'est vraiment facile de comprendre les résultats de modulo quand le premier chiffre est plus petit. Le résultat est toujours égal au premier nombre (le plus petit)

3 % 5 = 3
5 % 10 = 5
78 % 112 = 78

Essayez vous-même.

6
Doug Steinberg

Vous pouvez le penser comme 2/5 = 0 avec un reste de 2 sur 5.

5
akf

Si le premier nombre est plus petit, alors la réponse est à nouveau ce premier nombre. 

Parce que le deuxième nombre est plus grand, il entre dans le premier nombre zéro fois et le reste est la totalité de ce premier nombre. 

2
Darryl Calder

Le numérateur dans le reste est votre réponse modulo, peu importe , que le numérateur soit plus grand ou plus petit que le dénominateur.

12 % 5 = 2 , because 12 / 5 = 2 and **2**/5

9 % 2 = 1 , because 9 / 2 = 4 and **1**/2

Cela peut avoir plus de sens.

5 % 89 = 5 , because 5 / 89 = 0 and **5**/89

5 % 365 = 5 , because 5 / 365 = 0 and **5**/365

5 % 6 = 5 , because 5 / 6 = 0 and **5**/6
2
Emerson

Une autre chose à noter est que si le premier nombre (a) est un nombre négatif, la réponse est toujours la différence entre le deuxième nombre et le premier nombre (n-a).

Exemple: a% n

  1. -5% 7 = 2 ---> 7 - 5 = 2
  2. 4% -9 = -5 ---> 9 - 4 = -5 (suivez le signe du plus grand nombre)

Si les deux nombres étaient négatifs, la réponse sera toujours un nombre négatif égal au plus petit nombre.

  1. -5% -7 = -5
  2. -4% -9 = -4
2
aldennis

a% b = a si a << b

1
user180100
a%b = a/b=c,
      c*b=d,
      a-d=modulo;

C'est ce que python fait en mod deux nombres ou alors je pense. Le modulo entre un nombre plus petit et un nombre plus grand sera toujours le nombre le plus petit.

1
Josh

Il n'y a pas de nombre qui multiplierait 5 pour vous rapprocher de 2.

En d'autres termes, x doit être 0 pour répondre à l'équation: 5*x + r = 2.

1
dud3

Le MOD ne fonctionne pas avec un nombre décimal ... MOD (A, B)

1
abhishek

Pour comprendre l’arithmétique modulaire, je vous suggère de vous rendre à la Khan Academy et de lire son article à ce sujet. Ils ont également des questions pratiques interactives sur la même page. Voici le lien: https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmetic

En bref: 

Utilisez l'équation suivante: 

A = BQ + R

A est le dividende

B est le diviseur

Q est le quotient

R est le reste et est le résultat d'un modulo.

Q = (A/B)

Gardez à l'esprit que Q va toujours au plus petit entier le plus proche. Donc, si Q = 0,2, alors Q = 0,0. Si Q = -1,2, alors Q = -2,0. 


Pour votre question: 

Q = (2/5) = 0,4, donc Q = 0.

Branchez cela dans 'A = BQ + R':

2 = 5 * 0 + R

Donc, R = 2.


J'espère que cela t'aides. Comme je l'ai dit, vous pouvez en savoir plus sur Khan Academy. Voici le lien: https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmetic

0
H. Almidan