Saltar al contenido
EjemplosEnglishEspacio →

Números primos

Encuentra todos los números primos hasta un límite.

Nivel
Intermedio
Conceptos:
Entrada y salida
Funciones
Mientras
Para
Matemáticas
Abrir en Codoritmo

Ejecuta, modifica y depura este ejemplo en el navegador.

Lo que aprenderás

La Funcion EsPrimo devuelve un Logico y usa MOD para buscar divisores. El Mientras se detiene antes, al pasar la raíz cuadrada o al encontrar un divisor.

Código

primes.psc · 29 líneas
Funcion primo <- EsPrimo(n)    Definir primo Como Logico    Definir divisor Como Entero    primo <- n > 1    divisor <- 2    // Basta con probar divisores hasta la raíz cuadrada de n    Mientras primo Y divisor * divisor <= n Hacer        Si n MOD divisor = 0 Entonces            primo <- Falso        FinSi        divisor <- divisor + 1    FinMientrasFinFuncionAlgoritmo NumerosPrimos    Definir limite, n, contador Como Entero    Escribir "¿Hasta qué número busco primos?"    Leer limite    contador <- 0    Escribir "Primos hasta ", limite, ":"    Para n <- 2 Hasta limite Hacer        Si EsPrimo(n) Entonces            Escribir Sin Saltar n, " "            contador <- contador + 1        FinSi    FinPara    Escribir ""    Escribir "Encontré ", contador, " números primos."FinAlgoritmo

Diagrama de flujo

Cada bloque del diagrama corresponde a una instrucción del código.

Algoritmo NumerosPrimos
Algoritmo NumerosPrimosSíNoAlgoritmo NumerosPrimosAlgoritmo NumerosPrimosDefinir limite, n, contador Como EnteroDefinir limite, n, contadorComo EnteroEscribir "¿Hasta qué número busco primos?"Escribir "¿Hasta qué númerobusco primos?"Leer limiteLeer limitecontador <- 0contador <- 0Escribir "Primos hasta ", limite, ":"Escribir "Primos hasta ",limite, ":"Para n <- 2 Hasta limite HacerPara n <- 2 Hasta limiteSi EsPrimo(n) EntoncesEsPrimo(n)Escribir Sin Saltar n, " "Escribir Sin Saltar n, " "contador <- contador + 1contador <- contador + 1Escribir ""Escribir ""Escribir "Encontré ", contador, " números primos."Escribir "Encontré ",contador, " números primos."FinAlgoritmoFinAlgoritmo
Funcion EsPrimo
Funcion EsPrimoSíNoSíNoFuncion primo <- EsPrimo(n)Funcion primo <- EsPrimo(n)Definir primo Como LogicoDefinir primo Como LogicoDefinir divisor Como EnteroDefinir divisor Como Enteroprimo <- n > 1primo <- n > 1divisor <- 2divisor <- 2Mientras primo Y divisor * divisor <= n Hacerprimo Y divisor *divisor <= nSi n MOD divisor = 0 Entoncesn MOD divisor = 0primo <- Falsoprimo <- Falsodivisor <- divisor + 1divisor <- divisor + 1FinFuncion (devuelve primo)FinFuncion (devuelve primo)

Ejemplo de ejecución

Esto muestra el programa al ejecutarlo. Las respuestas escritas por el usuario aparecen resaltadas.

¿Hasta qué número busco primos?Respuesta del usuario: 50Primos hasta 50:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 Encontré 15 números primos.

Complejidad

Cuánto trabajo y memoria necesita según la cantidad de datos (n).

Complejidad
CasoCosto
MejorO(n√n)
PromedioO(n√n)
PeorO(n√n)
MemoriaO(1)

Desafío

Muestra también la suma de todos los primos encontrados.

Ver pista

Agrega un acumulador en el Para del algoritmo principal.

Abrir en Codoritmo