distribution of prime numbers
素数の分布はゼータ関数の整数点での値により精度良くわかる。偶数と奇数で差があるかを調べる。そしてリーマンの式R(x)よりもシンプルで、精度が良い式を見つけたのでそれを紹介する。
実数x以下の素数の個数をπ(x)とする。素数定理によると x/ln x はその近似式となる。
また対数積分 li(x) はより精度の良い式である。
li(x)を基にして連分数化すると次の式になる。xが大きいときの指数積分の漸近展開(asymptotic expansion)を利用している。「連分数展開 特殊関数の展開」を参照。
(L=ln x)
xが10^4から10^23 程度であれば42までの5項でも近い値になる。x/(ln x-1) がx/ln x よりも精度が良いのは、このような展開になるからである。
x |
π(x) |
x/(L-1-…-16/(L-9)…) |
li(x) |
10^5 |
9,592 |
9,624.3 |
9,629.8 |
10^10 |
455,052,511 |
455,055,607.0 |
455,055,614.6 |
10^15 |
29,844,570,422,669 |
29,844,571,473,717.5 |
29,844,571,475,287.6 |
連分数ではなく通常の分数での近似式は A Formula for π(x) ... にある。
その式は分母が級数で x/{L-1-(1/L)-(3/L2)-(13/L3)-(71/L4)- …} となっている。
上記の連分数式は次のように変形できる。
(L=ln x)
参考: 同じπの記号を使用する円周率の連分数が、似た形式であるのは不思議だ。
更に精度の良いリーマンの式がある。
mathworld.wolfram Riemann Prime Counting Function を参照。
(Riemann) μ(x)はメビウスの関数
素数が奇数個 → -1=μ(2)=μ(3)=μ(5)=μ(7)=μ(2*3*5)=…
平方因子あり → 0=μ(22)=μ(22*2)=μ(32)=μ(22*3)=…
素数が偶数個 → 1=μ(1)=μ(2*3)=μ(2*3*5*7)=…
μ(k)kの値は 1,-2,-3,0,-5,6,-7,0,0,10,-11,0,-13,14,15,0,-17,0,-19,…
この式は次のグラム級数と等しい。mathworld.wolfram Gram Series を参照。
(Gram)
1/ζ(s)=Σμ(k)/k^s を使用して両式の級数展開を比較するとその関係がわかる。
またラマヌジャンによる次の似た式がある。
(Ramanujan)
ベルヌーイ数ではなくゼータ関数値で表すと
グラムの式は自然数に対応し、ラマヌジャンの式は偶数に対応している。奇数に対応する式を求める。ln x=0 つまりx=1での値を一致させるために、以下ではラマヌジャンによる式には1を加える。
素数の積と円周率・ゼータ関数 で定義したSk=k!ζ(k)/(2k-1πk)を使用して、グラムの式を変形、展開すると
Sk 自然数
1を加えたラマヌジャンの式を変形、展開すると
B2k偶数
S2k=|B2k| を利用してベルヌーイ数を消去すると
S2k+1奇数
奇数に対応するこの式は、偶数に対応した式に比較して係数等が1増加したもので、同一形式と言ってよい。素数分布に関する上記のリーマンの式においては、ゼータ関数の正の偶数点と奇数点における値(に関係するB2kとS2k+1)のどちらか一方があれば良いようだ。
グラム級数やラマヌジャンの式はリーマンの式よりも計算に向くが、ゼータ関数値やベルヌーイ数の値を必要とする。このような数値を必要としない係数が単純なπ(x)の近似式を求める。奇数に対応する式から
と |E2k|=22k+2(2k)!L(2k+1)/π2k+1
を利用してS2k+1を消去すると
ここで L(2k+1)=1-1/32k+1+1/52k+1-… や4n+3型の素数の積である
(32k+1-1)/(32k+1+1)*(72k+1-1)/(72k+1+1)*… を1と見なすと
(Sugimoto)
この式はグラム級数を偶数項だけにして、ζ(2k+1)の替わりに 22k/(22k+1-1) としたものに相当する。具体的な係数で展開すると L=ln x として
S(x)=1 +7L2/16 +31L4/1536 +127L6/276480 +73L8/11796480 +2047L10/37158912000 +…
S(x)=1 +7(L/4)2 +(31/6)(L/4)4 +(254/135)(L/4)6 +(73/180)(L/4)8 +(4094/70875)(L/4)10 +…
S(x)はxが小さい値で10のべき乗の場合はリーマンの式よりも精度が良い。他の値でも同程度の精度と思われる。x=2〜105 におけるπ(x)との差は
最大値(+側) x=88788 において R(x)は 14.37… S(x)は 18.29…
最小値(-側) x=59797 において R(x)は -15.90… S(x)は -12.49…
最大値-最小値(幅) R(x)は 30.27… S(x)は 30.78…
x |
π(x) |
[R(x)]-π(x) |
[S(x)]-π(x) |
S(x) |
10^1 |
4 |
1 |
0 |
3.96 |
10^2 |
25 |
1 |
0 |
25.26 |
10^3 |
168 |
0 |
1 |
168.66 |
10^4 |
1,229 |
-2 |
0 |
1,228.58 |
10^5 |
9,592 |
-5 |
0 |
9,591.51 |
10^6 |
78,498 |
29 |
38 |
78,535.85 |
10^7 |
664,579 |
88 |
105 |
664,683.87 |
10^8 |
5,761,455 |
97 |
128 |
5,761,583.12 |
10^9 |
50,847,534 |
-79 |
-19 |
50,847,514.70 |
10^10 |
455,052,511 |
-1,828 |
-1,715 |
455,050,796.28 |
10^11 |
4,118,054,813 |
-2,318 |
-2,101 |
4,118,052,711.76 |
10^12 |
37,607,912,018 |
-1,476 |
-1,055 |
37,607,910,963.44 |
10^13 |
346,065,536,839 |
-5,773 |
-4,949 |
346,065,531,890.37 |
10^14 |
3,204,941,750,802 |
-19,200 |
-17,573 |
3,204,941,733,229.01 |
10^15 |
29,844,570,422,669 |
73,218 |
76,453 |
29,844,570,499,121.85 |
10^20 |
2,220,819,602,560,918,840 |
-4,891,825 |
-4,783,168 |
2,220,819,602,556,135,672.15 |
[x]はxに一番近い整数(四捨五入)である。R(x)はグラム級数で計算した。
x=2〜100 でのグラフは次の通り。
S(x)-π(x)の 最小値は x=73 で -1.40, 最大値は x=96 で 0.44, 平均値は x=2〜100 で -0.54である。この範囲ではR(x)に較べて1/2程度小さな値で、π(x)の下限値に近い値になる。ここで下限値とは x=素数-1 における値のことである。
xが105 付近でのグラフは次の通り。
このS(x)の線は、偶然π(x)の線と交差して近い値になっているのではない。π(x)の傾向線と同じ傾きになっている。またR(x)との差は約4であり、殆ど一定している。S(x)の線がπ(x)の水平線の左端、中央、右端のすぐ近くを通過しているのは注目に値する。
このπ(x)の近似式S(x)は単純な係数であるが、精度が良いのは驚きだ。改めて式を書くと
あるいは
π(x)の近似式は多数あると思われるが、以前目にした高精度な式を紹介する。 Roberto Neumann のサイト(ドイツ語)で、彼が2003年に見つけた式である。ページは 左のWissenschaften > 上のprimzahlmengen とたどる。それによるとx1/4からx1/2まで k/ln k を加えた値がπ(x)に近い。例えばx=104の場合は 10/ln 10 + 11/ln 11 + … + 100/ln 100 = 1229.03… となる。
kの開始値、終了値が整数にならない場合等、詳しくは上記サイトを参照。
ゼータ関数の零点の値を用いることにより、正確な分布がわかる。簡単に紹介すると
としたとき
(Σはζ(s)の零点ρをわたる)
この様子はアニメーションにより確認できる。ρ1〜ρk とΣの項を増加させたグラフは例えばExeter大学 のサイト内にある。