hasdiv n == hasdiv1 (n - 1) n hasdiv1 0 n == false hasdiv1 1 n == false hasdiv1 a n == true <| n % a = 0 |> hasdiv1 (a - 1) n prime 1 == false prime n == not (hasdiv n) primes == pfr 2 pfr n == n : rest <| prime n |> rest where { rest == pfr (n + 1) }