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 :)
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