Project Euler – Problem 10 Solution

Yan Cui

I help clients go faster for less using serverless technologies.

Problem

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.

Solution

 

open System

let findFactorsOf(n:int64) =
    let upperBound = int64(Math.Sqrt(double(n)))
    [2L..upperBound] |> Seq.filter (fun x -> n % x = 0L)

let isPrime(n:int64) = findFactorsOf(n) |> Seq.length = 0

let primeSequence max = seq { for n in 2L..max do if isPrime(n) then yield n }
let sum = primeSequence 1999999L |> Seq.sum

Yet another prime number related problem, and I’ve borrowed the findFactorsOf and isPrime functions from the problem 3 solution here.

The only interesting bit of code here is the primeSequence function, which generates a sequence of prime numbers equal or greater than 2, up to the specified max using a for … in loop. The for…in loop is basically the same as a foreach (var .. in ..) loop in C#.

Whenever you’re ready, here are 3 ways I can help you:

  1. 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 to level up your serverless skills quickly.
  2. 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.
  3. 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.

Leave a Comment

Your email address will not be published. Required fields are marked *