import Data.List
sv
(x:xs
) = x:sv
[y
| y
<- xs
, rem y x
/= 0]
aW1wb3J0IERhdGEuTGlzdAoKc3YgKHg6eHMpID0geDpzdiBbeSB8IHkgPC0geHMsIHJlbSB5IHggLz0gMF0KCm1haW4gPSBkbyB7IG4gPC0gZm1hcCByZWFkIGdldExpbmUgOwogIHByaW50ICQgCiAgICBsYXN0ICQgdGFrZSBuICQgc3YgWzIuLl0gfQ==
MjAwMAoKbnViQnkgKCgoPT0wKS4pLnJlbSkgWzIuLl0gLS0gIDFrIDAuMThzIDUuOCBNQiAgLS0gIDJrIDAuNzlzIDUuOCBNQiAgLS0gIG5eMi4xNQp0aGlzOiAgVC1zaWV2ZTogICAgICAgICAgICAtLSAgMmsgMC4xNHMgNi44IE1CICAtLSAgNGsgMC42MnMgNi44IE1CICAtLSAgbl4yLjE1
2000
nubBy (((==0).).rem) [2..] -- 1k 0.18s 5.8 MB -- 2k 0.79s 5.8 MB -- n^2.15
this: T-sieve: -- 2k 0.14s 6.8 MB -- 4k 0.62s 6.8 MB -- n^2.15