# How to Generate Pythagorean Triples

Pythagorean triples are sets of three integers that represent the sides of a right triangle. Some of the most well-known primitive Pythagorean triples are (3, 4, 5), (5, 12, 13) and (8, 15, 17). (Primitive means that you cannot divide each number by a common factor, i.e. the GCD = 1.)

You can verify that these give the sides of a right triangle by using the Pythagorean Theorem:

a² + b² = c²,

where a and b are the lengths of the legs and c is the hypotenuse. (Example: 8² + 15² = 17².)

A remarkable fact is that there are infinitely many primitive Pythagorean triples. But how can you generate them all? It turns out there are two easy methods for creating new Pythagorean triangles.

### Method 1: Two-Parameter Generator Set

Let m and n are positive integers with m > n, and let

a = m² - n²
b = 2mn
c = m² + n²,

then (a, b, c) is a Pythagorean triple with legs a and b and hypotenuse c. This can be verified with algebra:

(m² - n²)² + (2mn)²
= m⁴ - 2m²n² + n⁴ + 4m²n²
= m⁴ + 2m²n² + n⁴
= (m² + n²)²

If GCD(m, n) = 1 and m and n are not both odd, then the generated triple will be primitive.

### Method 2: Using Two Pythagorean Triples to Generate Two More

Suppose (a, b, c) and (x, y, z) are two Pythagorean triples. Then

(ax+by, |ay-bx|, cz) and (|ax-by|, ay+bx, cz)

are also Pythagorean triples. For example, take (3, 4, 5) and (8, 15, 17) as the original pair. Using the transformation above, we can construct two new Pythagorean triples:

(3*8+4*15, |3*15-4*8|, 5*17)
= (84, 13, 85) and

(|3*8-4*15|, 3*15+4*8, 5*17)
= (36, 77, 85)

To see why this works, examine the expression (ax+by)² + |ay-bx|². This can be expanded into

a²x² + 2abxy + b²y² + a²y² - 2abxy + b²x²
= a²x² + b²y² + a²y² + b²x²
= (a² + b²)(x² + y²)
= c²z²
= (cz)²

The same algebra can be applied to the second generated set.