El archivo primos1.html es el siguiente.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>números primos en JavaScript</title>
<script type="text/javascript" src="primos1.js">
</script>
</head>
<body>
<p>Generación de números primos hasta un millón.</p>
</body>
</html>
El archivo primos1.js es el siguiente.
document.write('<h1>'+'Generación de números primos hasta 1.000.000'+'</h1>');
var texto=2 + "<br>"; //el 2 es primo, y todos los demás pares no lo son
for (var i=3;i<=1000000;i=i+2){ //tratamos solo los impares
var primo=true; //inicialmente un número es primo hasta que no se demuestre lo contrario
for(j=3;j<=Math.sqrt(i);j=j+2){ //probamos hasta llegar a la raiz cuadrada de i
if (i%j==0){ //si el módulo es cero es que es divisible y por tanto no es primo
primo=false;
break;
}
}
if (primo) {texto += i + "<br>";}
}
document.write(texto);
El resultado tarda en aparecer unos segundos ya que se generan los primos hasta un millón. Puedes ver el resultado en el siguiente enlace.
Con punto de miles
Ahora queremos obtener el listado de los números primos hasta 1.111.111 pero con separador de miles. Es código es análogo al anterior con la novedad de que hemos introducido una función que nos va poniendo los puntos de separación para los miles.El archivo primos2.html es el siguiente.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>números primos en JavaScript</title>
<script type="text/javascript" src="primos2.js">
</script>
</head>
<body>
<p>Generación de números primos.</p>
</body>
</html>
El archivo primos2.js es el siguiente.
function formatNmb(nNmb){
var sRes = "";
for (var j, i = nNmb.length - 1, j = 0; i >= 0; i--, j++)
sRes = nNmb.charAt(i) + ((j > 0) && (j % 3 == 0)? ".": "") + sRes;
return sRes;
}
document.write('<h1>'+'Generación de números primos hasta 1.111.111'+'</h1>');
var texto=2 + "<br>";
var primo
for (i=3;i<=1111111;i=i+2){
primo=true
for(j=3;j<=Math.sqrt(i);j=j+2){
if (i%j===0){
primo=false;
break;
}
}
if (primo) {
texto += formatNmb(i.toString()) + "<br>";
}
}
document.write(texto);
El resultado tarda en aparecer unos segundos ya que se generan los primos hasta un poco más de 1.000.000. Puedes ver el resultado en el siguiente enlace.
No hay comentarios:
Publicar un comentario