楽しい動画だった.
練習がてら,任意の素数pに対して極座標(r, θ) = (p, p)の点をプロットするプログラムを作ってみた.
import numpy as np import matplotlib.pyplot as plt import math import time max_max_number = 100000 interval = 100 def get_prime_numbers(): start = time.time() prime_numbers = [2] for L in range(3, max_max_number): chk=True for L2 in prime_numbers: if L%L2 == 0:chk=False if chk==True:prime_numbers.append(L) prime_numbers = np.array(prime_numbers) return prime_numbers def converte_pn_coordinates(pns): converted_pns_x = [pn*math.cos(pn) for pn in pns] converted_pns_y = [pn*math.sin(pn) for pn in pns] return converted_pns_x, converted_pns_y def main(): print("getting prime_numbers...") prime_numbers = get_prime_numbers() print("converting polar coordinate...") converted_prime_numbers_x, converted_prime_numbers_y = converte_pn_coordinates(prime_numbers) for max_number in range(0, max_max_number, interval): num_plot_points = len(prime_numbers[prime_numbers < max_number]) x = converted_prime_numbers_x[:num_plot_points] y = converted_prime_numbers_y[:num_plot_points] max_prime_number = prime_numbers[num_plot_points] plt.figure(figsize=(5,5)) plt.scatter(x, y, s=0.5, c="red") plt.title("p < {}".format(max_number)) plt.axis("off") plt.xlim(-max_prime_number, +max_prime_number) plt.ylim(-max_prime_number, +max_prime_number) plt.savefig("save/{}.png".format(str(max_number).zfill(8))) plt.close() print("save/{}.png has been saved".format(str(max_number).zfill(8))) if __name__ == "__main__":[f:id:physics303:20201205224739p:plain] main()
学部1年生の時に,リーマン予想とか知らずに,素数の分布を調べようと,1から1000くらいまでの素数をあれこれプロットして規則性がないか調べてたなぁ(何も分からなかった)