← Euler Lab
#010

Suma de Primos

Cargando Python...

Summation of Primes

La suma de los primos menores que 10 es 2 + 3 + 5 + 7 = 17. Encuentra la suma de todos los primos menores que 2,000,000.

Criba de Eratóstenes Números primos Optimización de memoria

1 Entendiendo el Problema

Debemos sumar todos los números primos menores que 2 millones. Un número primo solo es divisible por 1 y por sí mismo.

Ejemplo: Primos menores que 30

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Suma = 2 + 3 + 5 + 7 + 11 + 13 + 17 + 19 + 23 + 29 = 129

148,933
Primos menores que 2M
~7.4%
Densidad de primos
1,999,993
Mayor primo < 2M
Respuesta
142,913,828,922
Límite
n < 2,000,000

2 Fuerza Bruta - 3 Variantes

Probamos cada número y verificamos si es primo mediante división por prueba.

Variante A: while True + break

Test de primalidad básico con break.

Python
// Output aparecerá aquí

Variante B: while condición

Condiciones directas en el while.

Python
// Output aparecerá aquí

Variante C: for range

Usando for con range y optimización √n.

Python
// Output aparecerá aquí

Análisis de complejidad

Tiempo
O(n × √n)

n números × √n divisiones cada uno

Espacio
O(1)

Solo variables auxiliares

⚠️ Para n = 2,000,000 esto es muy lento (~minutos). Necesitamos la Criba de Eratóstenes.

3 Enfoque Pythónico

Usando generadores, filter, y comprensiones con la criba básica.

Python
// Output aparecerá aquí

Herramientas usadas

  • is_prime[i*i::i] — Slice con paso para marcar múltiplos
  • enumerate() — Índices y valores
  • sum(generator) — Suma perezosa
  • List comprehension con filtro

El truco del slice

# Marcar múltiplos de 3 desde 9:
# arr[9::3] = [False] * count

# Es equivalente a:
for j in range(9, n, 3):
    arr[j] = False

4 Criba de Eratóstenes Optimizada

La Criba de Eratóstenes es el algoritmo clásico para encontrar todos los primos hasta n. Optimizamos memoria usando solo impares.

Visualización: Criba hasta 100

Primo Compuesto (tachado)
O(n log log n)
Complejidad temporal
O(n) → O(n/2)
Memoria (optimizada solo impares)
Python — Criba optimizada
// Output aparecerá aquí

Comparación de rendimiento

Método Complejidad Tiempo (n=2M)
Trial division O(n√n) ~30 segundos
Criba básica O(n log log n) ~50 ms
Criba optimizada (solo impares) O(n log log n) ~25 ms

Eratóstenes de Cirene (276-194 a.C.)

Matemático, geógrafo y astrónomo griego. Además de la criba, calculó la circunferencia de la Tierra con notable precisión midiendo sombras en Alejandría y Siena. Su método para encontrar primos sigue siendo uno de los más eficientes para rangos pequeños-medianos.