logo 3con14 js cod
logo 3con14 js cod
  • Javascript
  • Conceptos
  • Ejemplos
  • Tips & Tricks
  • ► TAREAS
 
 
icon html5
icon css3
mlogo 3con14 js cod

  • Inicio
  • Ejemplos
  • Números primos

Números primos

Este ejercicio consiste en utilizar un bucle for para comprobar si un número es primo o compuesto. Pasamos un número entero positivo (que previamente hemos verificado como tal) a la función esPrimo(n), devolviendo 1 si es primo o 0 si no lo es. Seguidamente mostraremos los mensajes pertinentes en pantalla.

Evidentemente, si analizamos el algoritmo, no solo lo dividimos por los números primos menores sino por todos los impares (menores a la raíz cuadrada de n, por definición) ya que todos los números primos son impares (excepto el 2) aunque no todos los impares son primos. El rendimiento baja pero es inapreciable.

En el ejemplo "demo"  se puede verificar si es primo cualquier número de 8 cifras o listar números primos menores o iguales a 15.485.867 (he puesto esta restricción por ser 1 millón de números primos los menores a éste).

Este mismo ejemplo lo podemos realizar utilizando un estructura while  para ceñirse más aún a la definición, aunque el rendimiento baja un poco. También se puede observar que el navegador FireFox es bastante más rápido que Google Chrome en listar el primer millón de números primos (~9s en FireFox), utilizando el mismo algoritmo.

Código JavaScript

Código JavaScript


// ========================================
//  Varificar si n es primo
//  Devuelve verdadero (1) o falso (0)
//  (cc) 3con14.pro
// ========================================

function esPrimo(n) {
    let max, d, r;
    max = Math.sqrt(n) + 1;

    if (n == 2)     { return (-1); }
    if (n % 2 == 0) { return 2; }

    for (d = 3; d < max; d += 2) {
        if (n % d == 0) { return d; }
    }

    return (-1);
}

Llamada a la función

Llamada a la función



function comprobarPrimo() {
    let resultado = ''; let d;
    n1 = parseInt(d1.value);
    if (isNaN(n1)) {
        resultado = '¡¡ ERROR !!';
        rpta.style.color = '#a00';
    } else {
        if (n1 == 0 || n1 == 1) {
            resultado += 'No se considera primo ni compuesto.'
        } else {
            d = esPrimo(n1);
            resultado += (d == (-1)) ? 'Es Primo' : 'NO es Primo, es compuesto y divisible entre ' + d;
        }
        rpta.style.color = 'inherit';
    }

    rpta.innerHTML = resultado;
}

Listar números primos

Listar números primos



function listarPrimo() {
    let rpta = document.getElementById('respuesta');
    let d1 = document.getElementById('dato1'); 
    let resultado, i, conta;

    n1 = parseInt(d1.value);
    resultado = (n1 < 2) ? '' : '2 ';
    rpta.innerHTML = 'Buscando...';
    setTimeout(() => {
        if (isNaN(n1) || n1 > 15485867) {
            resultado = '¡¡ ERROR !!, dato no válido.';
            rpta.style.color = '#a00';
            rpta.innerHTML = resultado;
            return;
        } else {
            conta = 1;
            for (i = 3; i < n1; i += 2) {
                if (esPrimo(i) == (-1)) {
                    resultado += i + ' ';
                    conta++;
                }
            }
            rpta.style.color = 'inherit';
            rpta.innerHTML = `<p>Hay ${conta} primos menores que ${n1}:</p>` + resultado;
        }
    }, 50);
}

Demo

Demo

es primo

 

  • Anterior

Ejemplos

  • Tabla de multiplicar
  • Números primos
  • Factorial de un número

Recursos

  • Visual Studio Code
  • Sublime Text
  • Prepros
  • CodePen .
  • Dillinger / MDP
Mas...

Mas...

codepen

uniwebsidad

overapi

can i use

w3schools

mdn

eloquent

Archivo .PDF del Libro

js arkaitz

Licencias ...

3con14─LAB 1998 - 2021
www.3con14.biz
(cc) Jesús Plaza M.
─ Otros Reconocimientos ─

Visitas ...

Hoy ... 8

Ayer ... 24

Week 56

Mes ... 403

TOTAL ... 161119

(cc) 3con14. Esta obra está bajo Licencia
Creative Commons Atribución-No Comercial-Compartir Igual 4.0

  • Javascript
  • Conceptos
  • Ejemplos
  • Tips & Tricks
  • ► TAREAS