5 / 6
Aug 2017

Dzień dobry,
ostatnimi czasy zauważyłem, że jest coś takiego jak "Segmented sieve of erastothenes" [czy jakoś tak]
Nie mogę znaleźć żadnych porządnych informacji na ten temat po polsku, a jedynie kilka kodów w internecie, których i tak nie jestem w stanie zrozumieć.
Mamy np. zadanie - znaleźć liczby pierwszy w przedziale od a do b, gdzie b-a <500
oraz 1 <= a < b <= 2^20
Normalnie w sicie Erastotenesa bym zrobił tablicę o rozmiarze b i bym wykreślał po kolei indeksy.
Jednakże jest to kompletnie nieoptymalne, gdyż tych liczb jest mniej niż 500, a ja rezerwuję aż 2^20.
Ale to nawet nie chodzi mi o to, że nie jest optymalne, tylko o to, że nie jestem w stanie takiej tablicy utworzyć (przekroczona pamięć programu?)
I tutaj właśnie przychodzi te posegmentowane sito, którego działania nie rozumiem.

Pytanie moje brzmi: Czy mógłby mi ktoś wytłumaczyć - jak zamiast tworzenia tablicy o rozmiarze 2^20 można by to zrobić? A raczej jak działa ten algorytm?

  • created

    Aug '17
  • last reply

    Aug '17
  • 5

    replies

  • 870

    views

  • 3

    users

  • 2

    links

2^20 to 1048576 - dla tych co mają kłopoty w czytaniem większych liczbami to w uproszczeniu milion

czyli bez problemu można taką tablicę utworzyć

PS. zadanie 520. Dyzio w średnich

Ale już 2^30 nie...
Chodzi mi o ogólną zasadę, a to tylko przykład.

Dyzio zrobiłem, ale normalnym sitem...
dla większej ilości liczb (w sensie górny zakres) już nie dałoby tak rady.

To na start.

Możliwości na pamięć jest mnóstwo. Albo piszesz po dysku, albo używasz listy, ...

Tu jest wszystko jasno opisane: http://www.geeksforgeeks.org/segmented-sieve/12. Przyzwyczajaj się do braku źródeł polskich, wszak ostatnio o ich jakości w przypadku tutoriali na YT każdy już coś napisał. To bardzo dobrze, że nikt nie zamierza robić tego rodzaju tutoriali o algorytmach.

Jeżeli nie umiesz C++ / innego języka programowania / matematyki / algorytmów / angielskiego na odpowiednim poziomie, zapomnij na razie o teorii sit, a nadrób odpowiednie zaległości. To da lepsze owoce w przyszłości niż pobieżne wyjaśnienia, jakie ktoś wstawi na spoju.

Szczególnie, że apetyt rośnie w miarę jedzenia (przynajmniej w nauce). Potem będziesz chciał znać dowody poprawności algorytmów, ich historię, ich ambitne zastosowania, możliwości ich modyfikacji, ich najwydajniejsze implementacje, ...