packages feed

egison-3.0.12: lib/math/prime.egi

(define $eratosthenes
  (lambda [$n]
    (let {[$ls (between 2 n)]}
      (letrec {[$looper
                (lambda [$ps $ls]
                  (let {[$p (car ls)]
                        [$xs (cdr ls)]}
                    (if (gt? (* p p) (rac xs))
                        {@ps @ls}
                        (looper {@ps p} (filter (lambda [$l] (not (eq? (remainder l p) 0))) xs)))))
                ]}
        (looper {} ls)))))