見出し画像

【Python】素数のらせんを描いてみた

先日以下の記事で、ちょっとした「数学アート」を紹介しました。


今年から勉強しているPythonというプログラミング言語。
仕事でPythonのmatplotlib(グラフ描画ライブラリ)に触れる機会があり、調子に乗って自分でこのらせんを描いてみました。
紹介した動画のようなアニメーションではないですが、
素数を極座標にプロットするだけならたった20行で描けちゃいます。
(最後にソースコード置いておきます)

以下、10のn乗(n=2~7)以下の素数を全てプロットしたグラフです。
一番下でも描画速度1秒以下。いろんな意味でヤバいです。

100以下の素数
1,000以下の素数
10,000以下の素数
100,000以下の素数
1,000,000以下の素数
10,000,000以下の素数


ソースコードです。お遊びコードなのでコメントも何もないです。
Python万能すぎる・・・

import matplotlib.pyplot as plt
import numpy as np
from sympy import sieve

n = 10**5
p = np.array([i for i in sieve.primerange(2, n)])
x = p * np.cos(p)
y = p * np.sin(p)

scale = 5
ratio = 2
width = np.max(p)

fig, ax = plt.subplots(facecolor="black", figsize=(ratio*scale,scale))
ax.axis("off")
ax.set_xlim(-width,width)
ax.set_ylim(-width/ratio, width/ratio)
ax.scatter(x,y,s=1,c="yellow")
plt.title("num of primes: {}".format(len(p)),c="white")
plt.show()




おまけ。令和のプログラムエディタは猫が歩いている。



頂いたサポートは、クリエイターとしての活動費として使用させていただきます!