pec-0.2.3: test_cases/euler/Euler5.pec
module Euler5
// 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
// What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?
imports
Prelude
Data.Stack
where
main :: () -> I32
main () = do
i = new 1
while (not (all_20 @i)) (inc i)
putW @i
assert (@i == 232792560)
0
is_factor :: { Arith a, Eq a } => a -> a -> Bool
is_factor x y => (x % y) == 0
all_20 :: W32 -> Bool
all_20 x = do
b = new True
for 1 (\i -> (i <= 20) && @b) succ
(\i -> b <- is_factor x i)
@b