En este ejemplo vamos a ver cómo podemos utilizar un bucle para conocer los números primos del 1 al 100 en Javascript. Así que pongámonos manos a obra.
Lo primero será saber qué es un número primo. Así, un número primo es aquel que solo es divisible por si mismo y por la unidad.
Es por ello que lo primero que haremos será crear un método que nos permita saber si es primo. Para ello dado un número iremos recorriendo todos los números hasta el 2 para ver si es divisible por alguno de ellos. ¿Cómo sabemos si es divisible? Pues porque la división nos da un resto de 0. El operador que nos permite calcular un resto en Javascript es el %
.
De esta manera el código que hace esa validación es el siguiente:
if(numero % i === 0) return false;
Y como tenemos que ir pasando por todos los números desde el número 2 hasta el número evaluado, creamos un bucle:
for(let i = 2; i <= numero; i++) if(numero % i === 0) return false;
En este punto podemos hacer una optimización y es que podemos iterar desde el número 2 hasta la raíz cuadrada del número de tal manera que optimizaríamos la complejidad ciclomática del método.
Para poder calcular la matriz cuadrada del número nos apoyamos en el método .sqrt() del objeto Math. De tal manera que el código nos quedaría de la siguiente forma:
for(let i = 2,raiz=Math.sqrt(numero); i <= raiz; i++) if(numero % i === 0) return false;
Ahora crearemos el método esPrimo() que recibirá el número del cual queremos saber si es primo o no, cosa que indicaremos devolviendo un valor booleano.
function esPrimo(numero) {...}
Si el número pasado es 1 o menor que 1 devolveremos false. La función nos quedaría de la siguiente forma:
function esPrimo(numero) { for(let i = 2,raiz=Math.sqrt(numero); i <= raiz; i++) if(numero % i === 0) return false; return numero > 1; }
Ahora, para poder mostrar los números primos del 1 al 100 en Javascript lo que haremos será construir un bucle que recorra los 100 primeros números y que vaya llamando a la función esPrimo().
for (let x=0;x<=100;x++) { if (esPrimo(x)) console.log("El número " + x + " es primo"); }
De esta forma ya habremos conseguido mostrar todos los números primos.