let max = 1000000
let prime = Array.create (max + 1) true
prime.[0] <- false
prime.[1] <- false
for i in 2 .. max |> float |> sqrt |> int do
if prime.[i] then
for j in i * i .. i .. max do
prime.[j] <- false
let rec f p =
if p = 0 then true
elif prime.[p] then f (p / 10)
else false
let g p =
let rec h m =
if m > p then prime.[p]
elif prime.[p % m] then h (m * 10)
h 10
seq {
for i in 10 .. max do
if f i && g i then
yield i
}
|> Seq.sum
|> printfn "%A"