Реализации алгоритмов/Решето Эратосфена: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 95:
===Просеивание через массив, посегментно между квадратами простых чисел===
<source lang="haskell">
import Data.Array.Unboxed
 
ps = 2 : [n | (r:q:_, px) <- (zip . tails . (2:) . map (^2)) <*>ps (inits) ps),
(n,True) <- assocs (
accumArray (\_ _ -> False) True (r+1,q-1)
[(m,()) | p <- px, let s=r`div`p*p, m <- [s+p,s+2*p..q-1]]
let s=(r+p)`div`p*p, m <- [s,s+p..q-1]] :: UArray Int Bool)]
</source>