pec-0.2.3: test_cases/euler/Euler7.pec
module Euler7
imports
Prelude
Data.Stack
where
main :: () -> I32
main () = do
p = new (stack #10001)
primes p
case new (pop p) of
Nothing -> assert False
Just i -> do
assert (@i == 104743)
putW @i
0
primes :: Ptr (Stack #cnt W32) -> ()
primes p => do
empty p
b = new (push 2 p)
for 3 (\_ -> not (is_full p)) (add 2)
(\i -> when (not (any (is_factor i) p)) (b <- push i p))
is_factor :: { Arith a, Eq a } => a -> a -> Bool
is_factor x y => (x % y) == 0