Listado de números primos en Python

Pues estaba haciendo un pequeño programa para listar un secuencia de números primos y he pensado que seria interesante compartirla en el blog. Lo primero, recordar que un número primo no es más que un número que sólo es divisible entre 1 y si mismo. Por ejemplo, el número 7 es primo ya que solo es divisible entre él mismo y uno. El número 12 no es primo porque además de ser divisible entre si mismo y uno, lo es también entre 6, 4, 3 y 2 (perdón por la perogrullada, pero a veces conviene refrescar conceptos).

El código que propongo en Python genera todos los números primos entre el número 2 y un número indicado por el usuario con el teclado (recordad que el número 1 NO es primo). Un primer bucle for itera entre el 2 y el número final y un segundo bucle for anidado intenta dividir cada número del primer bucle entre todos los enteros que hay entre 2 y 10 el número objetivo menos uno (código corregido gracias a los comentarios de los lectores); es decir, dado un número cualquiera, probamos a dividirlo entre todos los enteros anteriores a partir de el número 2. Si encuentra un división exacta entre ese intervalo es que el número no es primo y pone la variable del mismo nombre como False. Si son iguales (divide un número entre si mismo) sale del bucle con el comando break ya que todos los números son divisibles entre si mismos y no debe contabilizarse ese caso. Si no ha encontrado ninguna división exacta entre el número del primer bucle y los números entre 2 y n-1, implica que primos = True y por tanto imprime el número en cuestión. Por último lleva la cuenta de cuántos primos se han calculado y lo muestra en pantalla:

lista = int(input('¿Hasta qué número quieres la lista?: '))
cont = 0
for i in range(2, lista + 1):
    primos = True
    for j in range(2,i):
        if i == j:
           break
        elif i%j == 0:
           primos = False
        else:
           continue
    if primos == True:
        print(' ',i, end='')
        cont += 1
print('\nHay %u números primos.' % cont )

Una primera prueba entre 1 y 100 nos muestra los primeros 25 números primos:

Hay 168 números primos entre 1 y 1000:

Por último, calculamos cuántos números primos hay en los primeros 10.000 números enteros:

Obtenemos 1229 números primos en los primeros diez mil números naturales. Como curiosidad, en la primera centena de números había un 25% de números primos. En el primer millar el porcentaje baja hasta un 16,8% y si contabilizamos los primeros 10k baja a un 12,29%. He probado hasta 100.000 (ojo, tarda un rato) y el ratio baja a 9,59% (9592 números primos). De hecho, matemáticamente se puede demostrar que cuando n tiende a infinito el porcentaje de números primos es cero. ¿Curioso, no?

Para saber más:
Números primos en Python
Código de Python – Determinar si un número es primo o no
Calcular números primos con Python
Porcentaje de números primos entre los números naturales

6 comentarios en “Listado de números primos en Python”

  1. #Solucion:

    numero = int(input(“Ingrese un numero mayor a 1: “))
    def es_primo(numero):
    contador = 0
    for i in range(1,numero):
    if i == 1 or i == numero:
    continue
    if numero % i == 0:
    contador += 1
    if contador == 0:
    print(“Si es número primo”)
    else:
    print(“No es número primo”)
    es_primo(numero)

Responder a Juan Manuel Cancelar la respuesta