Złożoność algorytmu to
O(n(logn)(loglogn))operacje bitowe.
Jak do tego doszedłeś?
To, że złożoność obejmuje ten loglogntermin, mówi mi, że sqrt(n)gdzieś jest.
Załóżmy, że uruchamiam sito na pierwszych 100 liczbach ( n = 100), zakładając, że oznaczenie liczb jako złożonych zajmuje stały czas (implementacja tablicy), liczba razy, której użyjemy, mark_composite()byłaby podobna
n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2)
Aby znaleźć następną liczbę pierwszą (na przykład do przeskoczenia 7po przekreśleniu wszystkich liczb, które są wielokrotnościami 5), liczba operacji wyniosłaby O(n).
Więc złożoność byłaby O(n^3). Czy sie zgadzasz?