← Euler Lab
#009

Triplete Pitagórico

Cargando Python...

Special Pythagorean Triplet

Un triplete pitagórico cumple a² + b² = c². Encuentra el único triplete donde a + b + c = 1000 y calcula el producto a × b × c.

Teorema de Pitágoras Fórmula de Euclides Álgebra

1 Entendiendo el Problema

Un triplete pitagórico es un conjunto de tres enteros positivos (a, b, c) que satisfacen el teorema de Pitágoras. El ejemplo más famoso es (3, 4, 5).

a = 200 b = 375 c = 425
a² + b² = c²
Teorema de Pitágoras
a + b + c = 1000
Restricción del problema

Verificación manual:

1

Verificar la suma

200 + 375 + 425 = 1000

2

Verificar Pitágoras

200² + 375² = 40,000 + 140,625 = 180,625

425² = 180,625

3

Calcular el producto

200 × 375 × 425 = 31,875,000

a
200
b
375
c
425
Respuesta (a × b × c)
31,875,000
Triplete
(200, 375, 425)

2 Fuerza Bruta - 3 Variantes

Probamos combinaciones de a y b, calculando c = 1000 - a - b, y verificamos si es un triplete válido.

Variante A: while True + break

Bucle infinito con break cuando encontramos el triplete.

Python
// Output aparecerá aquí

Variante B: while condición

Condiciones directas en los while.

Python
// Output aparecerá aquí

Variante C: for range

Usando for con range para iterar.

Python
// Output aparecerá aquí

Análisis de complejidad

Tiempo
O(n²)

Dos bucles anidados hasta n/3 y n/2

Espacio
O(1)

Solo variables auxiliares

3 Enfoque Pythónico

Usando generadores y next() para encontrar el primer triplete válido.

Python
// Output aparecerá aquí

Herramientas usadas

  • next() — Obtiene el primer elemento de un iterador
  • for c in [expr] — Truco para "asignar" en comprensión
  • yield — Generador perezoso
  • math.prod() — Producto de iterables

El truco de for c in [expr]

En Python no puedes hacer asignaciones dentro de una comprensión. El truco es usar un for sobre una lista de un elemento:

# Esto NO funciona:
# (a, b, c := 1000-a-b)

# Esto SÍ funciona:
for c in [1000 - a - b]

4 Solución Algebraica con Fórmula de Euclides

La fórmula de Euclides genera todos los tripletes pitagóricos primitivos. Con álgebra, podemos reducir el problema a encontrar dos parámetros.

a = m² - n²
Cateto menor
b = 2mn
Cateto mayor
c = m² + n²
Hipotenusa

Derivación algebraica

Sumando los tres términos:

a + b + c = (m² - n²) + 2mn + (m² + n²) = 2m² + 2mn = 2m(m + n)

Si a + b + c = 1000, entonces:

2m(m + n) = 1000 → m(m + n) = 500

Buscamos m, n enteros positivos con m > n tal que m(m + n) = 500

Factorización de 500

500 = 2² × 5³. Buscamos m tal que 500/m - m = n > 0:

m m + n = 500/m n ¿Válido?
10 50 40 m < n
20 25 5 ✓ m > n
25 20 -5 n < 0
Python — Solución O(√n)
// Output aparecerá aquí

Comparación de rendimiento

Método Complejidad Iteraciones (n=1000)
Fuerza bruta O(n²) ~55,000 iteraciones
Fórmula de Euclides O(√n) ~22 iteraciones

Nota histórica

La fórmula de Euclides (~300 a.C.) genera todos los tripletes pitagóricos primitivos. Un triplete es primitivo si gcd(a,b,c) = 1. Todo triplete no primitivo es un múltiplo de uno primitivo.