## Euler Problem 9 Definition

A Pythagorean triple is a set of three natural numbers, , for which, . For example:

.

There exists exactly one Pythagorean triplet for which .

Find the product of *a*, *b* and *c*.

## Brute Force Solution

This solution uses brute force and checks all combinations of *a*, *b* and *c*. To limit the solution space I used the fact that *a* < *b* < *c*, which implies that *a* < *s*/3, and *a* < *b* < *s*/2, where *s* is the sum of the three sides.

a <- 0 b <- 0 c <- 0 s <- 1000 found <- FALSE for (a in 1:floor((s/3))) { for (b in a:(s/2)) { c <- s - a - b if (a^2 + b^2 == c^2) { found <- TRUE break } } if (found) break } answer <- a * b * c

View this code on GitHub.

Pingback: Euler Problem 9 : Special Pythagorean Triple – Mubashir Qasim

That was fun.

You could speed that up slightly by having b loop through (a+1):(s/2) instead of a:(s/2) since b can’t equal a.

I tried a different tack. Since min(a)=1 and max(b)=499, I walked a and b towards each other. That way there’s a max of 498 possibilities instead of 292*497 in yours.

I ran yours and mine 100 times and collected the times.

Your code:

user system elapsed

19.38 0.14 19.61

Mine:

user system elapsed

0.11 0.10 0.22

Neither of our codes verifies that c is an integer, and if there were a second solution, they would both miss the second.

Thanks Alan,

Project Euler is indeed a lot of fun. I am aiming to do at least 100 problems.

I knew there had to be faster code, so thanks for contributing.

I toyed with the Euclidean formulas for generating triples but moved to the next problem.

Peter

Pingback: Euler Problem 9 : Special Pythagorean Triple - Use-R!Use-R!