Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: K4sS- en 7 Abril 2013, 12:10 pm



Título: [PYTHON] Ayuda con ejercicio básico
Publicado por: K4sS- en 7 Abril 2013, 12:10 pm
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:
Código:
 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 :)


Título: Re: [PYTHON] Ayuda con ejercicio básico
Publicado por: K4sS- en 7 Abril 2013, 22:47 pm
Me autocontesto:

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

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