In [2]:
import numpy as np
import matplotlib.pyplot as plt
In [13]:
def isPrimes2(n):
if n > 1:
if n == 2:
return True
if n % 2 == 0:
return False
for x in range(3, int(np.sqrt(n) + 1), 2):
if n % x == 0:
return False
return True
return False
In [22]:
max_ = 50000
dlt = 0.1
edge = int(np.sqrt(max_)) // 2 + 1
fig, ax = plt.subplots(1, 1, figsize=(12, 12))
ax.set_xlim(-dlt * edge, dlt * edge)
ax.set_ylim(-dlt * edge, dlt * edge)
def p(max_, dlt=0.1):
d = 1
dx, dy = 0, -dlt
x, y = 0, 0
r = 1
# ax.text(x, y, d)
ax.scatter(x, y, c='k')
while d <= max_:
for _ in range(2):
for _ in range(r):
x += dx
y += dy
d += 1
if d > max_:
return
# print(x, y, d)
if isPrimes2(d):
# ax.text(x, y, d)
ax.scatter(x, y, c='k')
dx, dy = dy, dx
dy = -dy
r += 1
p(max_, dlt)
plt.show()
In [ ]: