Hola a todos!.
Hace tiempo que no posteo sobre números primos. En su momento programé algunos códigos en VBA y hace bastante poco lo hice en Python.
Hoy me gustaría hacerlo utilizando Typescript, sí, ese lenguaje de programación por el que apuesto firmemente como sucesor de VBA y que no cunda el pánico, aún queda bastante tiempo para que eso se produzca (por eso es el momento oportuno de empezar a formarse).
Vamos al asunto. Lo que busco es poder generar un listado de números primos desde el 2 hasta el número que yo indique en la función que os voy a dejar a continuación:
/**
* @customfunction
* @param {number[][]}
* @returns {number[][] }
*/
function numPrimos(nFinal) {
var f = !!0, t = !!1;
var matriz = [];
var nprimo = [];
var i;
var n;
for (i = 2; i <= nFinal; ++i) {
if (!matriz[i]) {
nprimo.push(i);
for (n = i << 1; n <= nFinal; n += i) {
matriz[n] = 1;
}
}
}
return [nprimo];
}
Lo único que tenemos que hacer es especificar en el parámetro nFinal el número hasta el que queremos llegar. Por ejemplo, del 2 al 50, ¿Cuántos números primos existen?:

En efecto, aquí tenemos el listado de números primos desde el 2 hasta el 50. Todo ello fruto del algoritmo que se representa en el script que os he dejado.
Por otra parte, he querido probar una técnica para convertir el 0 y el 1 como booleanos, y esto se realiza así:
var f = !!0, t = !!1;
Donde el 1 ahora es verdadero y el 0 es falso. Y también comentar que el resultado se obtiene como un derrame de los datos que hemos almacenados como una matriz.
Por último, destacar la utilización del operador Left shift (<<) para hacer el que código funcione más eficientemente.
Y esto es todo, espero que os haya resultado de interés.
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies