Comprensión del operador de módulo %

Resuelto Peter Featherstone asked hace 11 años • 10 respuestas

Entiendo el operador Módulo en términos de la siguiente expresión:

7 % 5

Esto devolvería 2 debido a que 5 entra en 7 una vez y luego da el 2 que sobra, sin embargo mi confusión surge cuando inviertes esta afirmación para leer:

5 % 7

Esto me da el valor de 5 lo que me confunde un poco. Aunque el total de 7 no entra en 5, una parte sí lo hace, ¿por qué no hay resto o hay un resto de 2 positivo o negativo?

Si se calcula el valor de 5 basándose en el hecho de que 7 no entra en 5 en absoluto, ¿por qué el resto no es 7 en lugar de 5?

Siento que me falta algo en mi comprensión del operador de módulo.

Peter Featherstone avatar Jul 08 '13 17:07 Peter Featherstone
Aceptado

(Esta explicación es solo para números positivos ya que de lo contrario depende del idioma)

Definición

El módulo es el resto de la división euclidiana de un número por otro. %se llama operación de módulo .

Por ejemplo, 9dividido entre 4iguales 2pero permanece 1. Aquí 9 / 4 = 2y 9 % 4 = 1.

División Euclidiana

En su ejemplo: 5 dividido por 7 da 0 pero sigue siendo 5 ( 5 % 7 == 5).

Cálculo

La operación del módulo se puede calcular usando esta ecuación:

a % b = a - floor(a / b) * b
  • floor(a / b)representa el número de veces que puedes dividir aporb
  • floor(a / b) * bes la cantidad que se compartió exitosamente en su totalidad
  • El total ( a) menos lo compartido es igual al resto de la división

Aplicado al último ejemplo, esto da:

5 % 7 = 5 - floor(5 / 7) * 7 = 5

Aritmética modular

Dicho esto, tu intuición fue que podría ser -2 y no 5. En realidad, en aritmética modular, -2 = 5 (mod 7)porque existe k en Z tal que 7k - 2 = 5.

Quizás no hayas aprendido aritmética modular, pero probablemente hayas usado ángulos y sepas que -90° es lo mismo que 270° porque es módulo 360. ¡Es similar, se envuelve! Entonces toma un círculo y di que su perímetro es 7. Luego lees dónde está 5. Y si intentas con 10, debería estar en 3 porque 10 % 7es 3.

Maxime Chéramy avatar Jul 08 '2013 11:07 Maxime Chéramy

Solución de dos pasos.

Algunas de las respuestas aquí son complicadas de entender para mí. Intentaré agregar una respuesta más en un intento de simplificar la forma de ver esto.


Respuesta corta:

Ejemplo 1:

7 % 5 = 2

Cada persona debe recibir una porción de pizza.

Divida 7 porciones entre 5 personas y cada una de las 5personas obtendrá una porción de pizza y terminaremos con 2porciones (restantes). 7 % 5es igual 2a porque 7 es mayor que 5 .


Ejemplo 2:

5 % 7 = 5

Cada persona debe recibir una porción de pizza.

Da 5porque 5 es menor que 7 . Entonces, por definición, no se pueden dividir5 elementos completos entre 7personas. Entonces la división no se realiza en absoluto y terminas con la misma cantidad con la que empezaste, que es 5.


Respuesta programática:

El proceso consiste básicamente en hacer dos preguntas:

Ejemplo A: (7 % 5)

(P.1) ¿Qué número multiplicar 5 para obtener 7?

Two Conditions: Multiplier starts from `0`. Output result should not exceed `7`. 

Intentemos:

El multiplicador es cero 0entonces,0 x 5 = 0

Aún así, nos quedamos cortos así que sumamos uno (+1) al multiplicador.

1entonces,1 x 5 = 5

Aún no obtuvimos 7, así que sumamos uno (+1).

2entonces,2 x 5 = 10

Ahora lo superamos 7. Entonces 2no es el multiplicador correcto. Retrocedamos un paso (donde usamos 1) y tengamos en cuenta el resultado que es 5. El número 5es la clave aquí.

(P.2) ¿Cuánto necesitamos agregar al 5(el número que acabamos de obtener en el paso 1) para obtener 7?

Restamos los dos números: 7-5 = 2.

Entonces la respuesta para: 7 % 5es 2;


Ejemplo B: (5 % 7)

1- ¿Qué número usamos para multiplicar 7 para obtener 5?

Two Conditions: Multiplier starts from `0`. Output result and should not exceed `5`. 

Intentemos:

0entonces,0 x 7 = 0

Aún no obtuvimos 5, probemos con un número mayor.

1entonces,1 x 7 = 7

Oh no, lo superamos 5, volvamos al paso anterior donde usamos 0y obtuvimos el resultado 0.

2- ¿Cuánto debemos sumar 0(al número que acabamos de obtener en el paso 1) para alcanzar el valor del número de la izquierda 5?

Está claro que el número es 5.5-0 = 5

   5 % 7 = 5

Espero que ayude.

Mohammed Joraid avatar Sep 06 '2018 10:09 Mohammed Joraid

Como otros han señalado, el módulo se basa en el sistema restante.

Creo que una forma más sencilla de pensar en el módulo es lo que queda después de que un dividendo (número a dividir) se haya dividido completamente por un divisor. Entonces, si pensamos en 5%7, cuando divides 5 entre 7, 7 puede caber en 5 solo 0 veces y cuando restas 0 (7*0) de 5 (tal como aprendimos en la escuela primaria), entonces el resto Sería 5 (el mod). Vea la ilustración a continuación.

   0
  ______
7) 5    
__-0____
   5

Con la misma lógica, -5 mod 7 será -5 (solo 0 7 pueden entrar en -5 y -5-0*7 = -5). Con la misma ficha -5 mod -7 también será -5. Algunos casos más interesantes:

5 mod (-3) = 2, es decir, 5 - (-3*-1)

(-5) mod (-3) = -2 es decir -5 - (-3*1) = -5+3

Dean Sha avatar Jul 11 '2017 18:07 Dean Sha

Se trata sólo de los restos. Déjame enseñarte como

10 % 5 = 0
9 % 5 = 4 (because the remainder of 9 when divided by 5 is 4)
8 % 5 = 3
7 % 5 = 2
6 % 5 = 1

5 % 5 = 0 (because it is fully divisible by 5)

Ahora debemos recordar una cosa, mod significa resto así que

4 % 5 = 4

pero ¿por qué 4? porque 5 X 0 = 0 entonces 0 es el múltiplo más cercano que es menor que 4, por lo tanto 4 - 0 = 4

Siddarth Nyati avatar Mar 22 '2018 05:03 Siddarth Nyati

Paso 1: 5/7 = 0,71

Paso 2: Toma el lado izquierdo del decimal, entonces tomamos 0 de 0,71 y lo multiplicamos por 7 0*7 = 0;

Paso #: 5-0 = 5; Por lo tanto, 5%7 =5

Yongama avatar Dec 24 '2016 08:12 Yongama