ゴールドバッハ予想について
概要
- すべての偶数は2つの素数の組み合わせで表現できるという仮説
詳細
- 証明されていない
- ヒューリスティックには素数の確率分布から多分正しいと思われている
ゴールドバッハ彗星の描画
- ある偶数nがいくつの素数で表現されるのかを表現したもの
import itertools
import collections
import pandas as pd
import seaborn as sns
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.dates as mdates # time seriesの描画
import importlib
def sieve(n):
dp = [1]*(n+1) # 初期値ですべてを素数と仮定
dp[0] = 0; dp[1] = 0 # 0, 1は明らかに違う
for i in range(2, n+1):
if dp[i]: # もし素数ならば
j = 2 * i # iの倍数はすべて素数ではないはず
while j <= n:
dp[j] = 0
j += i
return [i for i in range(n) if dp[i]]
primes = sieve(10**5)
nc = collections.defaultdict(int)
for p0, p1 in itertools.combinations_with_replacement(primes, 2):
num = p0+p1
nc[num] += 1
df = pd.DataFrame(nc.items())
df.columns = ["num", "cnt"]
df.query('num%2 == 0', inplace=True)
ax = sns.scatterplot(x=df.num, y=df.cnt, data=df, s=1)
ax.set(xlim=(0, 10**5))
display(ax)