para este programa validaremos si un número es primo considerando una entrada del usuario y validaremos si es divisible por todos los números desde el 2 hasta un número antes del mismo
0) imprimimos un mensaje para explicar que hace el programa
# como validar si un numero es primoprint('Validaremos si el número es primo o no')
1) definimos las variables que usaremos y pedimos la variable de entrada
#denimos las variables del programanumero = int(input("Ingrese un número: "))
es_primo = True
2) validamos con un for si el número es primo o no, mediante el residuo. En caso de encontrar un digito que divida el número en partes sin dejar residuo entonces el número no es primo y cambiamos el estado del resultado. Por último rompemos el loop para entregar el resultado
#validamos si el numero es primo o nofor i in range(2, numero): #validamos desde el 2 hasta el numero ingresadoif numero % i == 0: #si encontramos un numero que divida el numero entonces no es primo
es_primo=Falsebreak
3) Por último, imprimir el resultado:
if es_primo: #si es primo entonces imprimimos el mensaje deque es primo
print('El número', numero, 'es primo')
else: #si no es primo entonces imprimimos el mensaje dequeno es primo
print('El número', numero, 'no es primo')
Te faltaría un if para el caso especial de 1 que no es primo,
y se podría optimizar un poco mejor el algoritmo no iterar hasta “numero” sino que se podría iterar hasta la raíz cuadrada de “numero” puedes revisar este video donde explican el motivo de esto ultimo.
https://www.youtube.com/watch?v=9iH8mY3iGLk
Aquí les dejo la forma más simple (la más “matemática” es la de las raíces cuadradas). Bueno, les explico:
La función verificar_primo:
Excluye todos los números menores o iguales a 1, ya que no son primos.
Excluye el 2, que es el único número par que es primo.
Excluye los números que son divisibles por dos (módulo = 0), ya que no son primos.
Luego, más abajito:
Se parte del número tres, ya que no hay primos mayores que el 2 que sean pares. El ciclo for comienza en el tres y avanza de dos en dos, es decir, 3, 5, 7, etc. Por cada i del for, se evalúa el módulo del número con i. Si el módulo es cero, quiere decir que el número se puede dividir por otro número dentro del intervalo, y por lo tanto no es primo. Si el número es primo, llegará hasta antes del número dado sin encontrar divisores, y saldrá del for devolviendo True, indicando que es primo.
Lo demás es para preguntar y validar si es un número entero. Se usa un while para insistir hasta que se ingrese un entero válido, y luego se le pregunta al usuario si quiere seguir o no. Eso sería, compañeros. Saludos.
defverificar_primo(numero):if numero <= 1: returnFalseif numero == 2: returnTrueif numero % 2 == 0: returnFalsefor i in range (3, numero, 2): if numero % i == 0: returnFalsereturnTruedefmain():whileTrue: try: numero = int(input("Escribe un núemro para veficar si es primo o no: ")) if verificar_primo(numero): print(f'El número {numero} es primo') else: print(f'EL número {numero} no es primo') opcion = input('¿Deseas verificar otro número? (s/n): ') if opcion.lower() != 's': print('Hasta luego') breakexcept ValueError: print('Debes ingresar un número entero') if __name__ == "__main__": main()