Portál AbcLinuxu, 26. května 2024 23:41
Další z řady šíleností. Eratosthenovo síto v dc. Rychlost nic moc, ale padlé na hlavu je to dost.
dc -e '?dSavSb[SadLa+d1r:cdla>e]se[dlexsz]sd1[1+d;c0=ddlb>f]dsfx[p]sdlaSb1lfx'
Updated:
Trošku rychlejší verze inspired by Yeti.
dc -e '?dSavSb[d1r:cSadLa+dla!<e]se[ddSa2*Lad*lexszsz]sd3[d;c0=d2+dlb!<f]dsfx[p]sdlaSb2p3lfx'
Pokud někdo vyžaduje výsledek na jednom řádku tak koncovou část [p]sdlaSb2p3lfx
je možné nahradit [[,]Pdn]sdlaSb2n3lfx10P
P.S.: Jsem si vědom, že zbytečně plýtvám pamětí (nad 100000 je to prakticky nepoužitelné), ale myslím, že by to hodně zpomalilo dělat nějaké přepočty indexů (nahrazením d1r:c
za d2/1r:c
a d;c
za d2/;c
se spotřeba paměti zmenší na polovinu, ale taky bohužel rychlost) a hlavně jsem línej to předělat .
Tiskni Sdílej:
dc -e '!rm -rf ~'
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.