miércoles, 9 de noviembre de 2016

Cálculo del máximo común divisor de dos números naturales empleando el algoritmo de Euclides

ENUNCIADO. Calcular el máximo común divisor de $1050$ y $22$, empleando el algoritmo de Euclides

SOLUCIÓN. Dados dos números naturales $a$ y $b$, con $a \ge b$, se cumple la siguiente propiedad $$\text{m.c.d.}(a,b)=\text{m.c.d}(b,r)$$ donde $r$ representa el resto de la división $a \div b$. Iterando esta propiedad, hasta llegar a una división con resto igual a $0$, vemos que el máximo común divisor pedido ha de ser igual al divisor de la última división.

Así, pues, organizando los cálculos en una tabla con los números del ejercicio, se llega a
con lo cual $$\text{m.c.d}(1050,22)=2$$

OBSERVACIÓN. Este método es más eficaz que el m. basado en la descomposición en factores primos de los dos números dados. El siguiente programa escrito en Logo puede implementarse en un ordenador en el que hayamos instalado un intérprete de dicho lenguaje de programación ( muy apropiado para los primeros cursos de ESO ):

Siendo $a \ge b$, el siguiente programa recursivo lleva rápidamente a la solución:
procediment mcd_Euclides :a :b
  fes.local "r residu :a :b
  si :r=0 
       [escriu.seguit [mcd=] escriu :b  acaba] 
     [
       posa.a "a :b
       posa.a "b :r
       mcd_Euclides :a :b
     ]
fi

Este otro programa utiliza el mismo algoritmo, si bien es una versión no recursiva del de arriba
procediment mcd_Euclides_2 :a :b 
  fes.local "r 
  fes.local "dividend 
  fes.local "divisor 
  si :a > :b 
     [
       posa.a "dividend :a 
       posa.a "divisor :b
     ]  
     [
       posa.a "dividend :b  
       posa.a "divisor :a
     ]   
  repeteix :dividend
    [
      posa.a "r residu :dividend :divisor
      si :r=0 
        [
           escriu.seguit  [mcd =] escriu :divisor 
           acaba
        ]
      [
         posa.a "dividend :divisor 
         posa.a "divisor :r
      ]
     ]  
fi
Una vez preparado con el editor de Logo, lo pondremos en marcha mediante la siguiente petición ( línea de comandos del entorno de programación ):
%mcd_Euclides 1050 22
dando como respuesta
mcd=2
$\square$