Código escrito para Kotlin con el objetivo de Encontrar Números Primos

Este ejemplo utiliza el Algoritmo de la Criba de Eratóstenes, que es un método eficiente para encontrar todos los números primos menores o iguales a un número dado.

fun encontrarNumerosPrimos(limite: Int): List<Int> {
    // Crear una lista booleana para marcar los números primos
    val esPrimo = BooleanArray(limite + 1) { true }

    // Eliminar los números que no son primos
    for (i in 2..Math.sqrt(limite.toDouble()).toInt()) {
        if (esPrimo[i]) {
            for (j in i * i..limite step i) {
                esPrimo[j] = false
            }
        }
    }

    // Crear una lista con los números primos encontrados
    val numerosPrimos = mutableListOf<Int>()
    for (i in 2..limite) {
        if (esPrimo[i]) {
            numerosPrimos.add(i)
        }
    }

    return numerosPrimos
}

fun main() {
    val limite = 50 // Define el límite superior para la búsqueda de números primos
    val primos = encontrarNumerosPrimos(limite)

    println("Números primos hasta $limite: $primos")
}

 

Explicación del Código

  1. Inicialización del Array esPrimo:
    • Se crea un array booleano llamado esPrimo de tamaño limite + 1, donde cada elemento se inicializa en true. Este array se utiliza para marcar si un número es primo o no.
  2. Criba de Eratóstenes:
    • El bucle for externo recorre los números desde 2 hasta la raíz cuadrada del límite (sqrt(limite)), ya que cualquier número mayor que su raíz cuadrada ya habría sido marcado si no es primo.
    • Si esPrimo[i] es true, significa que i es un número primo.
    • Luego, otro bucle interno marca todos los múltiplos de i como false (no primos) empezando desde i * i hasta el límite (limite).
  3. Crear la Lista de Números Primos:
    • Se recorre nuevamente el array esPrimo desde 2 hasta el limite. Todos los índices marcados como true son números primos, y se añaden a la lista numerosPrimos.
  4. Función main:
    • En la función main, se define el límite hasta donde queremos buscar números primos (limite = 50 en este caso).
    • Llama a la función encontrarNumerosPrimos y muestra la lista de números primos encontrados.

Salida del Código

Para un límite de 50, la salida sería:

less

Números primos hasta 50: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

Este código te proporciona una forma eficiente y sencilla de encontrar todos los números primos dentro de un rango específico utilizando Kotlin. Puedes modificar el valor de limite en la función main para buscar números primos en diferentes rangos.