module _35 open common let circularPrime = let rotations (s:string) = let len = s.Length seq { for n in 0..(len - 1) do yield s.Substring(len - n) + s.Substring(0, len - n) } |> Seq.toList let oddOr2 i = i % 2 = 1 || i = 2 let pa = primeArray 1000000 |> Array.filter (numDigits >> (Array.forall oddOr2)) |> Array.map (string) let isPrime = isPrimeFunByArray pa pa |> Array.map rotations |> Array.filter (List.forall isPrime) |> Array.map (Seq.nth 0) |> Array.length