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#.