Доброго времени суток, товарищи! Сегодня будет заключающая статья про Решето Эратосфена, мы разберем оптимизацию решета - блочное решето. Напомню, что в прошлые разы мы посмотрели обычное решето и линрешето. Как мы знаем из одной из оптимизаций стандартного решета после корня из n невычеркнутыми останутся только простые числа, то есть просеивать нам достаточно лишь простыми до корня. Исходя из этого соображения мы можем до корня из n построить обычное решето и найти те числа, которыми мы будем вычеркивать, а дальше, не храня все числа, поблочно восстанавливать постепенно, разбив все числа от 1 до n на блоки (n не обязательно конец блока), блок за блоком, обновляя только этот блок. Асимптотика как и у обычного Эратосфена, зато по памяти мы уйдем до O(sqrt(n)+s). Код. Block Sieve. На гитхабе код приведен с комментариями, которые более подробно разъясняют код. Вкратце. Вначале мы в отдельный массив находим все простые в промежутке [1; sqrt(n)] обычным способом. Далее разбиваем ряд чисел