Rango de números primos con Python

Un número primo básicamente es aquel número que solo tiene dos divisores, el 1 y él mismo; por ejemplo, el número 17 es primo ya que solo se puede dividir por 1 y por 17. Este programa escrito en Python toma un rango de «n» cantidad de números y muestra en pantalla solo los que son primos.

Código fuente

El código fuente ocupa un total de 15 líneas.

#!/usr/bin/env python

cont = 0

numero = int(input("Ingrese un numero a evaluar: "))

for n in range(1, numero + 1):
    for d in range(1, n + 1):
	    if n % d == 0:
		    cont += 1
    if cont == 2:
        print("{}".format(n), end=" ")
    cont = 0

print("Fin")

La línea #!/usr/bin/env python es lo que se conoce en sistemas unix como Shebang, nos permite ejecutar los programas directamente sobre la línea de comandos sin necesidad de escribir el nombre del intérprete; por ejemplo, ./RangoNumerosPrimos.py en lugar de $python RangoNumerosPrimos.py.

Variable contador

Necesitamos una variable que se encargue de acumular el número de divisores de cada número del rango.

cont = 0

La variable cont jugará el papel de contador en el programa, la creamos e inicializamos con un valor de 0; pero para que un número sea considerado como primo, dicha variable debe valer 2.

Solicitando y leyendo numero ingresado por el usuario

El programa debe solicitar al usuario que ingrese un número, que a su vez representa el rango de números a evaluar por el programa; por ejemplo, desde 1 hasta 10.

numero = int(input("Ingrese un numero a evaluar: "))

Le mostramos un mensaje al usuario solicitando que ingrese un número y leemos el dato ingresado con la función input(), luego convertimos dicho dato a tipo entero usando la función int() y lo asignamos a la variable numero.

Procesando la información

Se requieren 2 bucles for y 2 sentencias if para procesar la información, como se muestra en este fragmento de código.

for n in range(1, numero + 1):
    for d in range(1, n + 1):
	    if n % d == 0:
		    cont += 1
    if cont == 2:
        print("{}".format(n), end=" ")
    cont = 0

El bucle for externo va a iterar sobre un rango que va desde 1 hasta el valor ingresado por el usuario en la variable numero + 1 usando la función range() ya que los rangos en Python excluyen el último valor, cada número del rango se asigna a la variable n. El bucle for interno va a iterar sobre un rango que va desde 1 hasta el valor de n + 1 y asigna cada valor a la variable d, el proceso de tomar los rangos hasta n mejora el rendimiento del programa ya que solo se itera sobre el rango necesario para comprobar si un número es divisible por 1 y por él mismo; por ejemplo, si la variable numero vale 30 y n vale 15, el bucle for solo va a iterar hasta 15 y no hasta 30.

La primera sentencia if verifica si la expresión n % d es igual a 0, de ser así, entonces incrementa la variable cont en +1. El segundo if evalúa si la variable cont es igual a 2 e imprime en pantalla el valor de n, que es un número primo y para evitar que el programa de salto de línea usamos el parámetro end=» «; por último reiniciamos la variable cont a 0 para contar la cantidad de divisores que tiene el siguiente valor del rango.

Fin!!
print("Fin!!")

Por último imprimimos la palabra «Fin!!», esto es solo un adorno del programa.

Ejecutando el programa

Ejecutamos el programa para probar que funciona correctamente.

[fixedtorres@linuxero]$ python NumerosPrimosRango.py
Ingrese un numero a evaluar: 50
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 Fin!!
[fixedtorres@linuxero]$

Al ingresar el número 50 nos muestra los números primos que hay desde 1 hasta 50.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *