Comprensión del operador de módulo %
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.
(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, 9
dividido entre 4
iguales 2
pero permanece 1
. Aquí 9 / 4 = 2
y 9 % 4 = 1
.
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 dividira
porb
floor(a / b) * b
es 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 % 7
es 3.
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 5
personas obtendrá una porción de pizza y terminaremos con 2
porciones (restantes). 7 % 5
es igual 2
a porque 7
es mayor que 5
.
Ejemplo 2:
5 % 7 = 5
Cada persona debe recibir una porción de pizza.
Da 5
porque 5
es menor que 7
. Entonces, por definición, no se pueden dividir5
elementos completos entre 7
personas. 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 0
entonces,0 x 5 = 0
Aún así, nos quedamos cortos así que sumamos uno (+1) al multiplicador.
1
entonces,1 x 5 = 5
Aún no obtuvimos 7, así que sumamos uno (+1).
2
entonces,2 x 5 = 10
Ahora lo superamos 7
. Entonces 2
no es el multiplicador correcto. Retrocedamos un paso (donde usamos 1
) y tengamos en cuenta el resultado que es 5
. El número 5
es 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 % 5
es 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:
0
entonces,0 x 7 = 0
Aún no obtuvimos 5, probemos con un número mayor.
1
entonces,1 x 7 = 7
Oh no, lo superamos 5
, volvamos al paso anterior donde usamos 0
y 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.
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
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
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