[PYTHON] Ayuda con ejercicio básico

Iniciado por K4sS-, 7 Abril 2013, 12:10 PM

0 Miembros y 1 Visitante están viendo este tema.

K4sS-

Enunciado:

Listando los 6 primeros números primos: 2, 3, 5, 7, 11, and 13, podemos ver que el sexto numero primo es el 13.

Cuál es el 10001 numero primo?

Mi codigo:
def euler7():
   n = 2
   i = 3
   contador = 0
   while n < i:
       if (2**n-2)%n==0:
           contador += 1
           if contador == 10001:
               sol = n
               break
       n += 1
       i += 1
   return sol


Nota: (2**n-2)%n==0 es una propiedad rara que solo se cumple si n es primo.

Me da un resultado que es primo, pero que no es el "100001st" primo.

¿Qué puede estar fallando? Gracias :)

K4sS-

Me autocontesto:

¿es primo?
def primo(n):
    for i in range(2,int(n**0.5)+1):
        if n%i==0:
            return False
           
    return True


Solucion
def euler7():
    n = 2
    contador = 0
    while True:
        if primo(n) == True:
            contador +=1
            if contador == 10001:
                return n
        n += 1