Ir al contenido principal

Validar si un número es primo en Python

  En esta entrada estaré compartiendo como validar si un número es primo o no en Python, primeramente estaré definiendo que es un número primo. ¿Qué es un número primo? Los números primos  son aquellos que solo son divisibles entre ellos mismos y el 1, es decir, que si intentamos dividirlos por cualquier otro número, el resultado no es entero. Dicho de otra forma, si haces la división por cualquier número que no sea 1 o él mismo, se obtiene un resto distinto de cero. Solución Luego de ver la definición de un número primo, veremos como programar una función que retorne verdadero si un número es primo o no. Será mostrado de dos formas, con recursividad y con iteración. Iteración  Para esta solución haremos una función que recibirá un número y creará una variable llamada contador que inicia en 0. Luego de eso va entrar a un ciclo for que irá de 1 al número + 1, donde aumentará el contador en uno cuando el número sea divisible entre la variable de iteración (...

Validar si un número es primo en Python

  En esta entrada estaré compartiendo como validar si un número es primo o no en Python, primeramente estaré definiendo que es un número primo.

¿Qué es un número primo?

Los números primos son aquellos que solo son divisibles entre ellos mismos y el 1, es decir, que si intentamos dividirlos por cualquier otro número, el resultado no es entero. Dicho de otra forma, si haces la división por cualquier número que no sea 1 o él mismo, se obtiene un resto distinto de cero.

Solución

Luego de ver la definición de un número primo, veremos como programar una función que retorne verdadero si un número es primo o no. Será mostrado de dos formas, con recursividad y con iteración.

Iteración 

Para esta solución haremos una función que recibirá un número y creará una variable llamada contador que inicia en 0. Luego de eso va entrar a un ciclo for que irá de 1 al número + 1, donde aumentará el contador en uno cuando el número sea divisible entre la variable de iteración (recuerde que en Python eso se valida si el residuo da 0, numero%variable==0), cuando termina el ciclo consulta si el contador fue mayor a dos, esto significa que el número tiene dos divisores, el 1 y el mismo, por lo tanto retorna verdadero ya que es primo. De lo contrario, retorna falso, ya que tiene más de dos divisores.

def es_primo(n):
    contador=0
    for i in range(1,n+1):
        if(n%i==0):
            contador+=1
    if(contador==2):
        return True
    else:
        return False

Recursividad

De esta forma cambia un poco e incluso es más eficiente con iteración. Esta solución se compone de dos funciones:
1. es_primo: esta función recibe el número por validar y consulta si es menor a 2, si lo es es por que es 1, 0 o un número negativo, por lo tanto, es falso, o sea no es primo. Si el número es 2 pues retorna verdadero porque es primo. Si es algo diferente a los primeros casos entonces se debe evaluar en la siguiente función, entonces se envía el número por validar y un 2, donde inicia el contador.

2. es_primo_aux: esta función auxiliar recibe el número por validar y una variable divisor, la función inicia consultando si el número de entrada es igual al divisor, si lo es, retorna true ya que cumple la condición para ser primo. Si no cumple esa primera condición verifica si el residuo entre el número y el divisor es igual a 0, si lo es entonces el número no es primo y retorna false. Si no cumple esa condición, vuelve a llamar esta función (es_primo_aux) y le envía de parámetro el número y el divisor +1.
def es_primo(n):
    if(n<2):
        return False
    if(n==2):
        return True
    else:
        return es_primo_aux(n,2)

def es_primo_aux(n,divisor):
    if(n==divisor):
        return True
    else:
        if(n%divisor==0):
            return False
        else:
            return es_primo_aux(n,divisor+1)

Conclusión

Para realizar esta funcionalidad existen varías maneras de realizar y queda a su decisión por cual optar, existen cursos en carreras con programación que piden una solución con recursividad para probar la forma de pensar fuera de la caja de los estudiantes, sin embargo, la mejor forma sería con iteración e incluso se puede hacer aún más óptimo, les dejo eso de tarea, ¿Como hacer la función de iteración compartida más eficiente?

Comentarios

Entradas populares de este blog

verificar si una letra es mayúscula o no (Python)

En esta entrada se hará una función en Python que recibirá un carácter( string) como parámetro y verificará si es una mayúscula o si es un carácter en minúscula. Esta función es muy simple, la enseñare en una forma muy básica el cual su funcionalidad pondrán utilizarlo para una mayor función si desean. El código podrán conseguirlo en mi Github:  https://github.com/Responses/Blog/blob/master/verificarLetra.py Código Explicación Para esta función se utiliza una librería llamada string, que ofrece muchos métodos que pueden servir de mucho pero en este caso se utilizara para dos cosas, tener acceso a letras mayúsculas( string.ascii_uppercase ) y minúsculas (string.ascii_lowercase).   1-Primeramente se crea una función llamada verificarLetra(la puede nombrar como desean) y que reciba un parámetro (pueden llamarlo como desee) 2- Primera condición, se verifica que si la letra pertenece a las mayúsculas, si es así entonces muestra el mensaje "La letra es  mayúsc...

Contar caracteres (Python)

En esta entrada explicaré un código bastante fácil de implementar el cual pondrán utilizar para contar la cantidad de caracteres que tiene una palabra o mejor dicho en un "String". El código que les explicaré estará en el lenguaje de programación Python, muy recomendado para principiantes de la programación, es muy fácil y básico. El código se puede obtener de mi github: https://github.com/Responses/Blog/blob/master/contarLetras.py Pasos Primero que todo tienen que abrir Python y abrir un archivo nuevo (pueden guard ar el archivo bajo el nombre que les guste.) (Ver ilustración 1) Ilustración 1 Segundo deberán escribir en el archivo nuevo creado el código de la siguiente imagen. (Ver ilustración 2) Ilustración 2 Explicación del código: 1-Se crea una función llamada  contarLetras  que recibe un parámetro (string) 2-Se crea un contador, que siempre inicia en 0. 3-Se crea un ciclo (for) el cual recorre el String carácter por carác...

Interfaz Gráfica para registro (Python)

En esta entrada les comparto una ventana para crear una cuenta hecha completamente con Python utilizando la librería de tkinter. Esta librería que ofrece Python para interfaz gráfica es muy básico y limitado, sin embargo se puede crear mucho a base de esta librería. Para demostrarlo hice este pequeño ejemplo y igual que todas mis entradas les comparto el código por si les interesa utilizarlo a su placer. Interfaz Gráfica Código from tkinter import* from tkinter import ttk def mainWindow(): dias = [] años = [] for dia in range(1,32): dias+=[dia] for año in range(1949,2019): años+=[año] meses=["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio", "Agosto","Setiembre","Octubre","Noviembre","Diciembre"] root=Tk() root.resizable(False,False) root.title("Sign up page") root.geom...