La Practica Hace Al Maestro: 6 Es primo


#1

https://www.codecademy.com/es/courses/python-intermediate-en-6yZJ7/0/6?curriculum_id=50fc7aab5fab3aa9c2002444

Estimados, solicito ayuda ya que no encuentro una solución, traté de razonarlo varias veces y no entiendo porqué no funciona.

Este es el error:

¡Uy! Probá otra vez. Tu función falla en es_primo(121) Donde tu función devuelve: True Cuando debería devolver: False

Este es el código:

def es_primo(x):
    nums = range(2,x)#Creo una lista entre el número dos y el número seleccionado. 
    print nums #Uso esto para corroborar que la lista sea correcta
    if x < 2: #Como los números menores a dos no son primos compruebo si es así y le digo que de false. 
        return False
    elif x == 2:#Dos es un número primo. 
        return True
    elif x > 2: 
        for i in nums: # Le pido que a todo número mayor lo use para
            if x % i == 0: #dividir el número original por cada número de la lista y si el residuo es 0 entonces que arroje false. 
                return False
            else:
                return True #en cualquier otro caso que arroje True

es_primo(10)

Desde ya muchas gracias.


#2

Te paso mi solución:

def es_primo(x):
    if x >= 2:
        n = 2
        while n <= (x-1):
            if x % n == 0:
                return False
                break
            else:
                n +=1
        return True
    else:
        return False

A veces creo que me complico un poco.
Saludos