#### Problem

*A unit fraction contains 1 in the numerator. The decimal representation of the unit fractions with denominators 2 to 10 are given:*

^{1}/_{2 }= 0.5

^{1}/_{3 }= 0.(3)

^{1}/_{4 }= 0.25

^{1}/_{5 }= 0.2

^{1}/_{6 }= 0.1(6)

^{1}/_{7 }= 0.(142857)

^{1}/_{8 }= 0.125

^{1}/_{9 }= 0.(1)

^{1}/_{10 }= 0.1

*Where 0.1(6) means 0.166666…, and has a 1-digit recurring cycle. It can be seen that *^{1}/_{7} has a 6-digit recurring cycle.

*Find the value of d < 1000 for which *^{1}/_{d} contains the longest recurring cycle in its decimal fraction part.

#### Solution

let naturalNumbers = Seq.unfold (fun state -> Some(state, state+1)) 1
let rec cycleLength n =
if n % 2I = 0I then cycleLength (n/2I)
else
if n % 5I = 0I then cycleLength (n/5I)
else
naturalNumbers
|> Seq.filter (fun x -> ((pown 10I x) - 1I) % n = 0I)
|> Seq.head
let answer = [1I..999I] |> Seq.maxBy cycleLength