それらのすべての答えに感謝します。そのようなかなり単純なものがあるのではないかと疑っていましたが、その時は見つけられませんでした。私ももう少し調べてみました。
ふるいが最初のn個の素数を生成するようにしたいので、近似値がn番目の素数以上になるようにします。(したがって、 n番目の素数の上限が必要です。)
ウィキペディアは、次の上限を示していますn >= 6
p_n <= n log n + n log log n (1)
ここp_n
で、 はn番目の素数で、log
は自然対数です。これは良いスタートですが、少なからず過大評価される可能性があります。The College Mathematics Journal のこの記事では、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
の第 2 近似、 の第 1 近似、および最初の 5 つの素数の配列ルックアップを使用するために、 n番目の素数近似関数を実装しました。n >= 7022
6 <= n < 7022
(最初の方法は、特に私が使用する範囲では、非常に厳密な境界ではありませんが、ふるいにこれが必要なため、気にしません。小さい数のふるいは計算コストが低くなります。)