
Untitled
By: a guest on
May 2nd, 2012 | syntax:
F# | size: 0.70 KB | hits: 35 | expires: Never
let bValues =
seq { 1..999 }
|> Seq.filter(fun u -> isPrime (int64 u))
let a,b,len =
seq { -999..999 }
|> Seq.filter(fun u ->bValues |> Seq.exists(fun k -> isPrime(int64 (1 + u + k))))
|> Seq.fold(fun acc a ->
bValues
|> Seq.filter(fun k -> isPrime(int64 (1 + a + k)))
|> Seq.map(fun k -> (a,k))
|> Seq.append acc
) Seq.empty
|> Seq.map (fun (a,b) ->
let len =
Seq.initInfinite(fun n -> (n*n) + (a*n) + b)
|> Seq.takeWhile(fun k -> isPrime (int64 k))
|> Seq.length
(a,b,len)
)
|> Seq.maxBy(fun (a,b,len) -> len)
printfn "%d %d -> length: %d; a*b = %d" a b len (a*b)