![](https://res.cloudinary.com/theburningmonk/image/upload/f_auto,c_scale,w_90/theburningmonk.com/mugshot.png)
Yan Cui
I help clients go faster for less using serverless technologies.
This article is brought to you by
The real-time data platform that empowers developers to build innovative products faster and more reliably than ever before.
The problem description is here, and click here to see all my other Euler solutions in F#.
I based my solution on Euclid’s formula for generating Pythagorean triples.
And given that max L is 1,500,000, the maximum value for m we need to consider is $latex \sqrt{\frac{L}{2}} $. Because $latex L = a + b + c $ and $latex a^2 + b^2 = c^2 $, we can deduce that $latex c < \frac{L}{2} $; and since $latex c = m^2 + n^2 $ we also have $latex m < \sqrt{c} $ and therefore $latex m < \sqrt{\frac{L}{2}} $.
The above makes use of a recursive function to calculate the GCD (based on Euclidean Algorithm):
For efficiency, we’ll create a cache to store the number of ways L can be used to create integer sided right-angle triangle. As we iterate through the m and n pairs we generated above, we’ll take advantage of the fact that if $latex a^2 + b^2 = c^2 $ then $latex ka^2 + kb^2 = kc^2 $ must also be true and increment multiples of L by one.
Finally, to work out the answer:
This solution runs for about 350ms on my machine.
The source code for this solution is here.
Whenever you’re ready, here are 4 ways I can help you:
- Production-Ready Serverless: Join 20+ AWS Heroes & Community Builders and 1000+ other students in levelling up your serverless game. This is your one-stop shop for quickly levelling up your serverless skills.
- Do you want to know how to test serverless architectures with a fast dev & test loop? Check out my latest course, Testing Serverless Architectures and learn the smart way to test serverless.
- I help clients launch product ideas, improve their development processes and upskill their teams. If you’d like to work together, then let’s get in touch.
- Join my community on Discord, ask questions, and join the discussion on all things AWS and Serverless.
Pingback: F# Weekly #2-#3, 2016 | Sergey Tihon's Blog