We use cookies to improve your experience, for authentication and to ensure that we show you advertising that is relevant to you. If you continue without changing your settings, we'll assume that you are happy to receive all cookies on Ideone website. However, if you wish, you can change cookie settings of your browser at any time.
Embed source code on your page
source code clone
download
copy to clipboard
report bug / make suggestion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{-# OPTIONS_GHC -O2 -fno-cse #-}
primesTMWE = 2 :3 :5 :7 : gapsW 11 wheel ( joinT3 $ rollW 11 wheel primes')
where
primes' = 11 : gapsW 13 ( tail wheel) ( joinT3 $ rollW 11 wheel primes')
gapsW k ws@ ( w:t) cs@ ( c:u) | k== c = gapsW ( k+ w) t u
| True = k : gapsW ( k+ w) t cs
rollW k ws@ ( w:t) ps@ ( p:u) | k== p = scanl ( \c d-> c+ p* d) ( p* p) ws
: rollW ( k+ w) t u
| True = rollW ( k+ w) t ps
joinT3 ( ( x:xs) : ~ ( ys:zs:t) ) = x : union xs ( union ys zs)
`union` joinT3 ( pairs t)
wheel = 2 :4 :2 :4 :6 :2 :6 :4 :2 :4 :6 :6 :2 :6 :4 :2 :6 :4 :6 :8 :4 :2 :4 :2 :
4 :8 :6 :4 :6 :2 :4 :6 :2 :6 :6 :4 :2 :4 :6 :2 :6 :4 :2 :4 :2 :10 :2 :10 :wheel
main = do
x <- read `fmap ` getLine -- 100k 1mln 2mln 4mln
mapM_ print -- 6.8MB 6.8MB 6.8MB 6.8MB -- !!!!!
. take 2 . map fst -- 0.13s 2.09s 4.87s 11.25s
. tail . iterate ( splitAt 10 . snd ) -- n^1.21 n^1.22 n^1.21 -- !!!!
$ ( [ ] , drop ( x- 10 ) primesTMWE)
pairs ( ( x:xs) :ys:t) = ( x : union xs ys) : pairs t
union ( x:xs) ( y:ys) = case ( compare x y) of
LT -> x : union xs ( y:ys)
EQ -> x : union xs ys
GT -> y : union ( x:xs) ys
ey0jIE9QVElPTlNfR0hDIC1PMiAtZm5vLWNzZSAjLX0KcHJpbWVzVE1XRSA9IDI6Mzo1Ojc6IGdhcHNXIDExIHdoZWVsIChqb2luVDMgJCByb2xsVyAxMSB3aGVlbCBwcmltZXMnKQogIHdoZXJlCiAgICBwcmltZXMnID0gMTE6IGdhcHNXIDEzICh0YWlsIHdoZWVsKSAoam9pblQzICQgcm9sbFcgMTEgd2hlZWwgcHJpbWVzJykKIApnYXBzVyBrIHdzQCh3OnQpIGNzQChjOnUpIHwgaz09YyAgPSBnYXBzVyAoayt3KSB0IHUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUcnVlICA9IGsgOiBnYXBzVyAoayt3KSB0IGNzICAKcm9sbFcgayB3c0Aodzp0KSBwc0AocDp1KSB8IGs9PXAgID0gc2NhbmwgKFxjIGQtPmMrcCpkKSAocCpwKSB3cyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJvbGxXIChrK3cpIHQgdSAKICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRydWUgID0gcm9sbFcgKGsrdykgdCBwcyAgICAKam9pblQzICgoeDp4cyk6IH4oeXM6enM6dCkpID0geCA6IHVuaW9uIHhzICh1bmlvbiB5cyB6cykgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHVuaW9uYCBqb2luVDMgKHBhaXJzIHQpICAKd2hlZWwgPSAyOjQ6Mjo0OjY6Mjo2OjQ6Mjo0OjY6NjoyOjY6NDoyOjY6NDo2Ojg6NDoyOjQ6MjoKICAgICAgICA0Ojg6Njo0OjY6Mjo0OjY6Mjo2OjY6NDoyOjQ6NjoyOjY6NDoyOjQ6MjoxMDoyOjEwOndoZWVsCgptYWluID0gZG8gCiAgIHggPC0gcmVhZCBgZm1hcGAgZ2V0TGluZSAgICAgICAgICAgICAgICAtLSAgIDEwMGsgICAgMW1sbiAgICAgMm1sbiAgICAgNG1sbgogICBtYXBNXyBwcmludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gIDYuOE1CICAgNi44TUIgICAgNi44TUIgICAgNi44TUIgICAgIC0tICEhISEhCiAgICAgICAgIC4gdGFrZSAyIC4gbWFwIGZzdCAgICAgICAgICAgICAgICAtLSAgMC4xM3MgICAyLjA5cyAgICA0Ljg3cyAgICAxMS4yNXMKICAgICAgICAgLiB0YWlsIC4gaXRlcmF0ZSAoc3BsaXRBdCAxMC5zbmQpIC0tICAgICAgbl4xLjIxICBuXjEuMjIgICBuXjEuMjEgICAgICAgICAtLSAhISEhCiAgICAgICAgICQgKFtdLCBkcm9wICh4LTEwKSBwcmltZXNUTVdFKQoKcGFpcnMgKCh4OnhzKTp5czp0KSA9ICh4IDogdW5pb24geHMgeXMpIDogcGFpcnMgdCAKdW5pb24gKHg6eHMpICh5OnlzKSA9IGNhc2UgKGNvbXBhcmUgeCB5KSBvZiAKICAgICAgICAgICBMVCAtPiB4IDogdW5pb24gIHhzICAoeTp5cykKICAgICAgICAgICBFUSAtPiB4IDogdW5pb24gIHhzICAgICB5cyAKICAgICAgICAgICBHVCAtPiB5IDogdW5pb24gKHg6eHMpICB5cw==
clone
download
copy to clipboard
input / output show all
hide all
upload with new input
result:
Success
time: 0.14s
memory: 6828 kB
returned value: 0
output:
[1299553,1299583,1299601,1299631,1299637,1299647,1299653,1299673,1299689,1299709]
[1299721,1299743,1299763,1299791,1299811,1299817,1299821,1299827,1299833,1299841]
result:
Success
time: 2.09s
memory: 6828 kB
returned value: 0
output:
[15485761,15485773,15485783,15485801,15485807,15485837,15485843,15485849,15485857,15485863]
[15485867,15485917,15485927,15485933,15485941,15485959,15485989,15485993,15486013,15486041]
result:
Success
time: 4.87s
memory: 6784 kB
returned value: 0
output:
[32452657,32452681,32452687,32452727,32452759,32452781,32452789,32452837,32452841,32452843]
[32452867,32452883,32452909,32452919,32452921,32452997,32453011,32453021,32453027,32453039]
result:
Success
time: 11.25s
memory: 6784 kB
returned value: 0
output:
[67867831,67867843,67867901,67867903,67867907,67867937,67867949,67867951,67867957,67867967]
[67867979,67867999,67868011,67868023,67868041,67868069,67868077,67868111,67868123,67868153]
author's note
test TMWE code from http://haskell.org/haskellwiki/Prime_numbers
Choose your language:
Help us translate Ideone - click here