Спасибо за все эти ответы. Я подозревал, что было что-то довольно простое, но я не мог найти это в то время. Я тоже провел немного больше исследований.
Поскольку я хочу, чтобы сито генерировало первые n простые числа, я хочу, чтобы аппроксимация была больше или равна n th премьер. (Поэтому я хочу верхнюю границу n th простого числа.)
Википедия дает следующую верхнюю оценку для n >= 6
p_n <= n log n + n log log n (1)
, где p_n
- это n -ое простое число, а log
- натуральный логарифм. Это хорошее начало, но его можно переоценить на немалую сумму. Эта статья в Журнале математики колледжа дает более жесткую верхнюю границу для n >= 7022
p_n <= n log n + n (log log n - 0.9385) (2)
Это намного более жесткий предел, как показано в следующей таблице
n p_n approx 1 error% approx 2 error%
1 2
10 29 31 6.90
100 541 613 13.31
1000 7919 8840 11.63
10000 104729 114306 9.14 104921 0.18
100000 1299709 1395639 7.38 1301789 0.16
1000000 15485863 16441302 6.17 15502802 0.11
10000000 179424673 188980382 5.33 179595382 0.10
Я реализовал свою n функцию простого приближения, чтобы использовать второе приближение для n >= 7022
, первое приближение для 6 <= n < 7022
и поиск в массиве для первых 5 простых чисел.
(Хотя первый метод не является очень жестким ограничением, особенно для диапазона, в котором я его использую, меня это не беспокоит, так как я хочу это для сита, а сито с меньшими числами вычислительно дешево.)