10 de noviembre de 2013

Smallest multiple - Project Euler, problema 5

Este problema es bastante sencillo:
2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?
Es fácil notar que solo se trata del máximo común divisor (mcm) de una lista de números.

Octave y Matlab tienen una función llamada lcm que calcula precisamente el mcm, lo curioso es que no está definido para un vector, si no solo para un par de números, pero al final de cuentas no presenta mayor dificultad:

function n=mcm(x)
 n=x(1);
 for i=2:numel(x)
  n=lcm(n,x(i));
 end
end
mcm(1:20)