'''
Primera versión de un programa para testear si un número es primo o no mediante una función.

Para ver si un número es primo o no, se buscan divisores menores o iguales a la parte entera de su raíz cuadrada, y si no se encuentra ninguno es porque el
número es primo (corolario del Teorema Fundamental de la Aritmética).
'''

# FUNCIONES

def primo(n):
    ''' Busca divisores impares de n hasta a lo sumo la parte entera de su raíz cuadrada. '''
    tope = int(n**0.5)

    if n == 2: return True # caso especial del primer primo, que es par

    if n % 2 == 0: return False # caso especial de números pares, que son divisibles por 2 y por tanto no son primos
    
    posibleDivisor = 3 # primer divisor posible de n

    while posibleDivisor <= tope:
        if n % posibleDivisor == 0: return False
        posibleDivisor += 2 # sólo se buscan divisores impares

    return True # Si no terminó la función por encontrar un divisor dentro del ciclo repetitivo, es porque n es primo

# PROGRAMA

print('VERIFICACIÓN DE SI UN NÚMERO ES PRIMO O NO\n')

número = int(input('Ingrese un entero positivo mayor que 1 para saber si es primo o no: '))

if primo(número): print('\nES')
else: print('\nNO ES')

input('\nPulse Intro/Enter para terminar')
