素数の螺旋といえば、ウラムの螺旋というのがありますが、素数の螺旋を3次元グラフで描いてみました。
#0. 螺旋を描いてみる
ひとまず、素数は赤、素数でなければ青で描いています。目印として、1と2は大きめのマークにしています。
最初のグラフは次のプログラムで1周を100等分で描いています。
# prime number spiral
import math
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sympy import isprime
fig = plt.figure(figsize = (8, 8))
ax = fig.add_subplot(1,1,1, projection='3d')
ax.set_xlabel("x", size = 14, color = "r")
ax.set_ylabel("y", size = 14, color = "r")
ax.set_zlabel("z", size = 14, color = "r")
ax.set_xticks([-1.0, -0.5, 0.0, 0.5, 1])
ax.set_yticks([-1.0, -0.5, 0.0, 0.5, 1])
pi2 = math.pi * 2
x = []
y = []
z = []
colors = []
sizes = []
div = 100
high = 0
for n in range(1,300):
high += 10
if n <= 2:
size = 50
else:
size = 5
if isprime(n):
color = "red"
else:
color = "blue"
x += [math.sin(pi2 * (n / div))]
y += [math.cos(pi2 * (n / div))]
z += [high]
colors += [color]
sizes += [size]
# plot
ax.scatter(x, y, z, s = sizes, c = colors)
plt.show()
#1. 10等分で描いてみる
分割数(div)を10にして描いてみました。
1の縦軸は、素数だったり素数ぢゃなかったり。
2の縦軸は、2だけですね。まあ、偶数は2の倍数だからしょーがない。
3の縦軸は、素数だったり素数ぢゃななったり。
4の縦軸は、素数がないですね。4は2の倍数なのでしょーがないか。
5の縦軸は、5だけですね。
6の縦軸は、4と同じで素数がないですね。まあ、2や3の倍数ですからね。
7の縦軸は、そこそこ素数があったり、なかったり。
8の縦軸は、ない!
9も縦軸も、そこそこ素数があったり、なかったり。
10の縦軸も、ない!みなまで言うな。分かってるって。
#2. 6等分で描いてみる
分割数(div)を6にして描いてみました。
マークがギュウギュウなので、100までにしました。
なんで6なのって? 2 x 3 は 6だからです。テキトー。
なんか素数が仲良く集まってきた感じ。
1の縦軸と5の縦軸にほとんどの素数が集まってきています。
2の縦軸と3の縦軸なんて、2と3だけぢゃん。
あえて、式風にしてみると、だいたい 6n+1 と 6n+5 に集まりやすい?
#3. 3等分で描いてみる
分割数(div)を3にして描いてみました。
6等分でそれっぽく集まってきたので半分の3等分にしてみました。
1の縦軸と2の縦軸には素数が集まってきていますが、3の縦軸なんて3しかない。
もいちど、式風にしてみると、だいたい 3n + 1 と 3n + 2 に集まりやすい。
#4. 考察?
素数を螺旋で描いてみましたが、素数と円周率って相性が良かったりする?
ひょっとして、何か見つけちゃったかも?
え!みんな知ってった!!
#参考