MakarovSuites
Русский
EnglishDeutschРусскийУкраїнськаFrançaisEspañolItalianoPolski
Связь и лицензии

Math

Решето и плотность простых

Проведите решето руками на пронумерованных плитках: возьмите следующий делитель, предскажите, откуда начнётся его волна, и смотрите, как она вычёркивает кратные — уже вычеркнутые лишь задеваются. Рядом — pi(x) по счёту против приближений x/ln x и Li(x).

Решето и плотность простых — Изображение из программы
Изображение из программы

Что происходит

Решето Эратосфена на доске пронумерованных плиток. Возьмите следующий делитель — наименьшую ещё стоящую плитку — и скажите, откуда начнётся его волна: первое ещё стоящее кратное — всегда p², потому что каждое меньшее кратное k·p имеет меньший делитель k и уже вычеркнуто. Затем волна проходит по p², p² + p, …: стоящую плитку она вычёркивает, и та принимает цвет этого простого; уже вычеркнутую лишь задевает и считает, но не вычёркивает заново. Найденные простые собираются в строку под доской. Решето останавливается, когда квадрат следующего делителя выходит за доску — у любого составного до N есть делитель не больше √N, — и всё, что ещё стоит, — простые. На большой доске плитки становятся плотной картой, а лупа под курсором читает числа. График рядом считает pi(x) до своей границы против двух приближений, x/ln x и Li(x): грубое занижает на проценты, Li почти лежит на счёте, а 60180 — последнее N до двух миллионов, где x/ln x ошибается больше чем на десять процентов.

Уравнения модуля
Уравнения
решето считает pi(N) точно - это определение, а не оценка
pi(10^3) = 168,  pi(10^4) = 1229,  pi(10^5) = 9592,  pi(10^6) = 78498
N / ln N  ЗАНИЖАЕТ:  при 10^3 на 13.83 %, при 10^4 на 11.66 %, при 10^5 на 9.45 %, при 10^6 на 7.79 %
Li(N) = интеграл от 2 до N от dt/ln t  ошибается на доли процента:  5.098 %, 1.309 %, 0.383 %, 0.164 % на тех же десятичных порядках
  Li(10^4) = 1245.092052,  Li(10^6) = 78626.503996
задача:  60180 - ПОСЛЕДНЕЕ N до двух миллионов, где N/ln N отклоняется более чем на десять процентов (10.0004 %); при 60181 отклонение 9.9990 % - найдено ОДНИМ ПРОХОДОМ по префиксным счётам, потому что ошибка НЕ монотонна: она пересекает линию десяти процентов 159 раз, а бисекция, стоявшая здесь раньше, давала ответ 60180
стоимость решета, две РАЗНЫЕ величины:
первых вычёркиваний = N − pi(N) − 1   ТОЧНО (8770 при 10^4, 921501 при 10^6) - каждое составное число вычёркивается впервые ровно один раз
всего обращений   ~ сумма N/p по p <= sqrt(N)  (16981 против 18028 при 10^4, отношение 0.9419; 0.9654 при 10^6) - решето начинается с p² и никогда не трогает меньшие кратные
наибольший промежуток между простыми:  8 после 89, 20 после 887, 36 после 9551, 72 после 31397 - все пока ниже ln²N

Другие эксперименты

К каталогу
RSA на маленьких числах — Изображение из программы

Math

RSA на маленьких числах

Сообщение проходит две степени по модулю на столе из дерева и латуни. Выполняйте целочисленные шаги, исследуйте перестановку и ищите делитель с точным счётчиком.

Хеши и корзины — Изображение из программы

Math

Хеши и корзины

Сортировочный стол: ключи — бумажные бирки, каретка хеширует каждую и бросает в корзину с номером хеша, коллизия — два разных ключа в одной корзине. Хеш — именованная функция: сумма кодов, многочлен с основанием 31, FNV-1a — или равномерный оракул, стоящий за кривой дней рождения. Отредактируй ключ, посмотри вычисление хеша по символам, переверни один бит и сосчитай сдвинувшиеся биты хеша; сравни две функции на одних ключах.

Гонка сортировок — Изображение из программы

Math

Гонка сортировок

Три сортировки бегут по одному массиву с одинаковой скоростью в сравнениях, и первой финиширует та, которая спросила меньше. Решает гонку не размер, а беспорядок: на отсортированном входе вставки берут 63 сравнения, а быстрая — 2016.