Joven hacker sonriendo

División Residual

En mátematicas se conoce como residuo a la operación matemática que proporciona lo que sobra de una división entre dos enteros, así pues el residuo de 2/2 es igual a 0 ya que el dos está una sola vez en el dos mas CERO. Pero el residuo de 3/2 es igual a 1 ya que el dos está una sola vez en el tres mas UNO.

ejemplo
Figura 1. Ejemplo

Mas concretamente: "el resto o residuo de una división de dos números enteros es el número que se le ha de restar al dividendo para que sea igual a un determinado número de veces el divisor" (Tomado de Wikipedia)

En informática la operación conocida como modulus o módulo es la operación que nos da el valor residual de una división. Normalmente la encontramos en varios lenguajes de programación como: %. Por ejemplo:

  • 2%2 = 0

  • 3%2 = 1

  • 4%2 = 0

  • 5%3 = 2

Está operación es bastante utilizada ya que gracias a ella podemos saber por ejemplo si un número es par o impar, ya que si el residuo de cualquier número entero divido entre dos nos da cero significa que es par. Por el contrario si dividimos cualquier número entero entre dos y el residuo de esta división nos da uno, esto quiere decir que este número es impar. También es muy común utilizar la operación modulus en informática para encontrar de la manera más simple los números primos.

A continuación se explica la solución a un reto informático de CodeEval para encontrar el residuo de una división entre enteros en lenguaje python.

Codeeval Reto 62

Se debe encontrar el residuo de una división entre enteros, pero con la condición de no utilizar la operación modulus (%). Como entrada nos dan los valores a los cuales les debemos encontrar el residuo de la división separados por coma:

M,N → M modulus N → M%N

Entrada:

  • 20,6

  • 2,3

  • 7,3

Salida:

  • 2 → el 6 está 3 veces en el 20 → 3*6 = 18 → y le falta 2 para llegar a 20

  • 2 → el 3 está 0 veces en el 2 → 0*3 = 0 → y le falta 2 para llegar a 2

  • 1 → el 3 está 2 veces en el 7 → 2*3 = 6 → y le falta 1 para llegar a 7

test.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Programa para calcular el residuo de una división sin utilizar el operador % propio del lenguaje
# Nos dicen que no nos preocupemos por el divisor que nunca va a ser igual a cero
# Para enteros positivos solamente
# Solución por GoSo (Alejandro Aguirre Soto)

import sys                                              # Importamos la librería necesaria
class Modulus:                                          # llamamos a nuestra clase Modulus
        with open(sys.argv[1], 'r') as test_cases:      # Obtenemos los valores de entrada
                for test in test_cases:                 # y los guardamos en la variable test_cases
                                                        # Vamos a iterar por cada línea de entrada con un ciclo for
                                                        # Es decir primero implementamos la línea "20,6", luego la "2,3"       y asi..
                                                        # Una línea a la vez

                        num = test.split(",")           # Separamos los números por la coma en el arreglo num[]
                        num1 = int(num[0])              # el número 1 (Dividendo) estará en la variable num1
                        num2 = int(num[1])              # el número 2 (Divisor) estará en la variable num2
                        modu = num1- (num2*(num1/num2)) # en la variable modu calculamos el residuo de la siguiente manera:
                                                        # calculamos la división normal "/" entre el dividendo y el divisor
                                                        # para saber la cantidad de veces que num2 esta contenido en num1
                                                        # esa cantidad de veces la multiplicamos por el número divisor
                                                        # con el fin de acercarnos lo mas posible al dividendo
                                                        # y el número 1 (dividendo) lo restamos a la operación anterior
                                                        # la diferencia entre el dividendo y divisor es el residuo
                                                        # si el residuo es 0 la división es exacta

                        print(modu)                     # mostramos el residuo

# acá finaliza nuestro programa

Foto del autor

Alejandro Aguirre Soto

Ingeniero mecatrónico, Escuela de Ingeniería de Antioquia, Maestría en Simulación de sistemas fluidos, Arts et Métiers Paristech, Francia, Java programming specialization, Duke University , USA

Apasionado por el conocimiento, el arte y la ciencia.


Relacionado





Haz un comentario