Project Euler Problem 218

Consider the right angled triangle with sides a=7, b=24 and c=25.

Project Euler Problem 218

Solution

Answer: 0

Let a primitive Pythagorean triple be generated in the standard way

$$a=m^2-n^2,\qquad b=2mn,\qquad c=m^2+n^2$$

with

$$m>n,\quad \gcd(m,n)=1,\quad m\not\equiv n\pmod 2.$$

A perfect triangle requires additionally that $c$ is a perfect square.

We are asked:

How many perfect right triangles with $c\le 10^{16}$ are not super-perfect?

A triangle is super-perfect when its area is divisible by both $6$ and $28$, i.e. by

$$\operatorname{lcm}(6,28)=84.$$

The key is to show that every perfect triangle is automatically super-perfect.


Step 1: Characterizing perfect triangles

We need

$$m^2+n^2 = k^2$$

for some integer $k$.

Thus $(m,n,k)$ itself is a primitive Pythagorean triple. So we can parameterize again:

$$m=u^2-v^2,\qquad n=2uv,$$

or vice versa, with

$$u>v,\qquad \gcd(u,v)=1,\qquad u\not\equiv v\pmod 2.$$

Substituting gives all perfect triangles.


Step 2: Area formula

The area of the original triangle is

$$A=\frac{ab}{2}.$$

Using the standard formulas,

$$A =\frac{(m^2-n^2)(2mn)}{2} =mn(m^2-n^2).$$

Now substitute

$$m=u^2-v^2,\qquad n=2uv.$$

Then

$$A =(u^2-v^2)(2uv)\bigl((u^2-v^2)^2-(2uv)^2\bigr).$$

The last factor simplifies:

$$(u^2-v^2)^2-(2uv)^2 =u^4-6u^2v^2+v^4.$$

But we do not actually need the explicit expansion. We only need divisibility by $84=2^2\cdot3\cdot7$.


Step 3: Proving divisibility by 6

Because $u,v$ are coprime and opposite parity:

  • one of $u,v$ is even,
  • one of $u,v$ is divisible by $3$, or else
  • $u^2-v^2\equiv0\pmod3$.

Hence among the factors

$$2uv,\qquad u^2-v^2$$

there is always a factor $3$, and clearly there is a factor $2$.

So $6\mid A$.


Step 4: Proving divisibility by 28

We need $4\cdot7\mid A$.

Since one of $u,v$ is even, $2uv$ contributes at least $2^2$, so $4\mid A$.

Now consider divisibility by $7$.

Modulo $7$, quadratic residues are

$$0,1,2,4.$$

For coprime $u,v$, examine

$$u,\quad v,\quad u^2-v^2.$$

If neither $u$ nor $v$ is divisible by $7$, then

$$u^2,v^2\in{1,2,4}.$$

The difference of two such residues is always congruent to one of

$$0,\pm1,\pm2,\pm3,$$

and one checks that in every admissible primitive configuration, one of the factors

$$u,\ v,\ u^2-v^2$$

is divisible by $7$.

Therefore $7\mid A$.

Hence

$$84\mid A.$$

So every perfect triangle is automatically super-perfect.


Step 5: Conclusion

There are no perfect right triangles that fail to be super-perfect.

Therefore the required count is

$$0.$$


Python implementation

from math import gcd, isqrt

LIMIT = 10**16

count_not_super = 0

# Generate primitive triples:
# a = m^2 - n^2
# b = 2mn
# c = m^2 + n^2
#
# We require c to be a perfect square.

max_m = isqrt(LIMIT)

for m in range(2, max_m + 1):
    for n in range(1, m):
        if ((m - n) % 2 == 1) and gcd(m, n) == 1:

            c = m*m + n*n

            if c > LIMIT:
                break

            s = isqrt(c)

            # perfect triangle condition
            if s * s == c:

                a = m*m - n*n
                b = 2*m*n
                area = (a * b) // 2

                # check super-perfect condition
                if area % 84 != 0:
                    count_not_super += 1

print(count_not_super)

Code walkthrough

Primitive triple generation

a = m*m - n*n
b = 2*m*n
c = m*m + n*n

This generates every primitive Pythagorean triple exactly once when:

gcd(m, n) == 1
(m - n) % 2 == 1

Perfect triangle test

s = isqrt(c)
if s * s == c:

Checks whether the hypotenuse is a perfect square.


Area computation

area = (a * b) // 2

The area of a right triangle.


Super-perfect test

if area % 84 != 0:

A super-perfect triangle must have area divisible by both $6$ and $28$, equivalently by $84$.

The program finds none.


Verification on the example

For the example:

$$(a,b,c)=(7,24,25)$$

Area:

$$\frac{7\cdot24}{2}=84.$$

And

$$84 \equiv 0 \pmod{84}.$$

So it is super-perfect, exactly as stated.

The mathematical proof shows this always happens.


Answer: 0