Los primeros seis números primos son: 2, 3, 5, 7, 11 y 13.
El 6º primo es 13.
¿Cuál es el primo número 10.001?
¿Qué es un número primo?
Un número primo es aquel que solo es divisible por 1 y por sí mismo. El 1 no se considera primo.
¿Cómo verificar si n es primo?
Si n < 2, no es primo
Por definición, 0, 1 y negativos no son primos
Buscar divisores entre 2 y n-1
Si encontramos alguno, n no es primo
Optimización: solo hasta √n
Si n tiene un divisor > √n, también tiene uno < √n
Conceptos clave
La estrategia
Contar primos uno a uno hasta llegar al 10.001º. Para cada número, verificamos si es primo.
Optimización básica: Después del 2, solo los impares pueden ser primos. Ahorramos la mitad de las comprobaciones.
Variante A: while True + break
Bucle infinito que rompe cuando encontramos el primo 10.001.
Variante B: while con condición
La condición de salida va en el while.
Variante C: saltando pares
Contamos el 2 aparte y luego solo probamos impares.
¿Cuál elegir?
| Variante | Candidatos probados | Ventaja |
|---|---|---|
| A: while True | ~104.743 | Explícita |
| B: while condición | ~104.743 | Sin break |
| C: solo impares | ~52.372 | 2× más rápida |
Conceptos clave
i * i <= n
Equivale a i <= √n pero sin calcular raíz (más rápido).
int(n**0.5) + 1
n**0.5 es √n. int() trunca. +1 incluye el límite.
range(3, limit, 2)
El tercer argumento es el paso. 2 genera 3, 5, 7, 9... (solo impares).
return True/False
La función devuelve un booleano. Podemos usarlo directamente en if.
Conceptos de Python aprendidos
Generador infinito de primos
Creamos un generador que produce primos indefinidamente. Luego tomamos el 10.001º.
Desglose
all(n % i != 0 for i in ...)
all() devuelve True si todas las condiciones son verdaderas. Verifica que ningún i divide a n.
yield
Convierte la función en generador. Produce un valor y pausa hasta que se pida el siguiente.
islice(gen, 10000, 10001)
De itertools. Toma elementos del índice 10000 al 10001 (solo uno).
next(...)
Obtiene el siguiente elemento del iterador. Como islice da uno solo, ese es nuestro resultado.
Conceptos aprendidos
Criba de Eratóstenes
Para encontrar muchos primos, es más eficiente generar todos los primos hasta un límite con la Criba de Eratóstenes.
Visualización: primos hasta 50
Tachamos múltiplos de 2, luego de 3, de 5... Los que quedan son primos.
¿Hasta dónde buscar?
El primo 10.001º es ~104.743. Usamos 150.000 como límite seguro (por el teorema de los números primos).
Comparativa de rendimiento
| Método | Para 10.001 primos | Complejidad |
|---|---|---|
| Probar cada n | ~1.5 segundos | O(n√p) |
| Criba | ~0.02 segundos | O(n log log n) |