Mostrar si un número es primo con Python

Los números primos son todos aquellos números que solo tienen 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 versión 3 cuenta con las siguientes 3 características:

  1. Evalúa el número ingresado por el usuario.
  2. Nos muestra cuántos divisores tiene el número.
  3. Nos muestra si un número es o no es primo.
""" Escrito con Python 3 """

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

cont = 0

print()
print("{0} es divisible por".format(numero), end=": ")
for n in range(1, numero+1):
  if numero % n == 0:
    print(n, end=" - ")
    cont += 1
print("Fin")

if cont == 2:
  print("El numero ingresado si es primo, tiene {0} divisores".format(cont))
else:
  print("El numero ingresado no es primo, tiene {0} divisores".format(cont))
Solicitando datos con la función input():
numero = int(input("Ingrese un numero para ser evaluado: "))

Python nos ofrece una forma muy sencilla para leer datos ingresados por el usuario usando la función input(), dicha función deja en espera la terminal hasta que el usuario ingresa el dato y presiona Enter; pero tiene un problema, todo lo que se escriba en la terminal se lee como una cadena de caracteres y en ese sentido no se pueden realizar operaciones numéricas. Para solucionar este inconveniente hay que usar la clase int() como se muestra en el fragmento de código, esta clase retorna un objeto de número entero.



En el fragmento de código anterior se le solicita al usuario que ingrese un número, una vez que se ingresa el dato pasa a convertirse en un valor tipo int; pero, ¿qué ocurre si se ingresa una cadena o carácter? esto causa un error en tiempo de ejecución de tipo ValueError. El número entero es almacenado en la variable valor.

Creando variable contador:
cont = 0

Este pequeño fragmento de código crea una variable de tipo int inicializada con a cero (0). Hay que recordar que Python es un lenguaje de programación dinámico, no se requiere indicar el tipo de la variable.

Un salto de línea. más claro el código:
print()

Mientras que en lenguajes de programación como C y C++ los saltos de línea se indican de forma explícita usando carácter de nueva línea «\n», en Python solo basta con escribir la función print() vacía.

Primera función print():
print("{0} es divisible por".format(valor), end=": ")

El anterior fragmento de código nos muestra un mensaje como el siguiente, pero sin mostrar los divisores ya que serán mostrados por el bucle for:

Lenguaje de programación Python

La función print() recibe dos argumentos; el primero es un string con la expresión {0} seguido por el método .format(), esto se conoce como formateo de cadenas, se realiza tomando en orden de izquierda a derecha los argumentos en el método reemplazando en el mismo orden cada par de {} en el string por cada argumento.

Cada número entre el par de {} es opcional y se conocen como índices, funcionan igual que los índices en una lista para acceder a cada argumento iniciando desde el índice cero; también son útiles para alterar el orden en el que aparecerá cada argumento dentro del string en pantalla.

Bucle for, mostrando cuanto divisores hay:
for n in range(1, valor+1):
    if valor % n == 0:
       print(n, end=" - ")
       cont += 1
print("Fin")

El bucle for en Python funciona un poco diferente a los bucles en lenguajes como C++, C o Go; lo primero que hay que saber es que itera sobre rangos o secuencias de elementos. En este caso el bucle for va a iterar sobre un rango que va desde 1 hasta numero + 1 usando la función range() sin incluir el último valor; en su interior hay una sentencia if que verifica si numero módulo n da como residuo 0, de ser así, entonces imprime el valor de n e incrementa la variable cont en 1. El argumento end=» – «, elimina los saltos de nueva línea.




La variable cont solo puede valer 2 para para que se clasifique a un número como primo, si vale mas o vale 1, entonces el número quedaría descartado como número primo. Por último se imprime la palabra «Fin!!».

Sentencia if, verificando si es o no es primo:
if cont == 2:
    print("El numero ingresado si es primo, tiene {0} divisores".format(cont))
else:
    print("El numero ingresado no es primo, tiene {0} divisores".format(cont))

Ya por último, la sentencia if verifica si la variable cont vale 2, de ser así entonces el número es primo y se le informa al usuario mediante un mensaje que le indica cuántos divisores fueron encontrados.

Al ejecutar el programa el resultado será el siguiente:

[fixedtorres@linuxero]$ python NumerosPrimos.py
Ingrese un numero a evaluar: 2018

2018 es divisible por: 1 - 2 - 1009 - 2018 - Fin
El numero ingresado no es primo, tiene 4 divisores

 

Añadir un comentario

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