ウラムの螺旋の斜めの線は本物だった。長い対角線の素数率39.28%に対し、ランダム対照200回の最大は15.46%
約7分で読めます

ウラムの螺旋の斜めの線は本物だった。長い対角線の素数率39.28%に対し、ランダム対照200回の最大は15.46%


1963年、数学者スタニスワフ・ウラムは退屈な講演の最中に落書きをしていた。方眼紙に1, 2, 3, … と渦巻き状に数を書き、素数に丸をつけていった。すると、丸が斜めの線に並んで見えた

素数の並びには規則がないはずだ。だから、渦巻きに並べて斜めの筋が見えるというのは、それだけで妙な話になる。

ただ、こういう「模様が見える」話は疑ってかかったほうがいい。人間は無地の壁にも顔を見つける。本当に線があるのか、それとも私がそう見たいだけなのか。同じ密度でランダムに撒いた対照群と比べれば決着がつく。

実験に使ったコードの全文はGitHubに置いています

まず、並べてみる

501×501501 \times 501、つまり1から251,001までを渦巻きに並べた。この範囲の素数は22,131個、密度8.81%。

上下に2枚並んだ白黒の点描図。上は素数を渦巻きに並べたもので、明らかに斜めの筋が何本も走っているのが見える。下は同じ個数の点をランダムに撒いたもので、均一な砂嵐にしか見えず、筋はどこにもない

点の数はほぼ同じだ。それでも上には斜めの筋があり、下にはない。目視の段階でもう決着がついている気がするが、数えてみる。

サイズを大きくしていくと、筋が育っていく様子が見える。

渦巻きのサイズが11×11から501×501まで段階的に大きくなっていくアニメーション。小さいうちは単なる点の集まりだが、大きくなるにつれて斜めの筋が次第にはっきりしてくる

自分で拡大したりホバーして数を確かめられるようにもした。

直線ごとの素数密度を数える

横・縦・右下がり対角・右上がり対角の4方向について、すべての直線上の素数の割合を計算し、その最大値を取る。同じことを「同じ密度でランダムに撒いた盤」200枚に対しても行って比較した。

左は4方向それぞれについて、実測の最大素数率(赤)とランダム対照200回の最大(灰)を並べた棒グラフ。横は17.2%対14.4%、縦は18.2%対15.2%と僅差だが、右下がり対角は40.3%対26.8%、右上がり対角は37.3%対29.3%と差が開いている。右は対角線を長さで3群に分けた棒グラフで、短い線40.3%、中39.4%、長い線39.3%とほぼ変わらず、長い線でのランダム上限15.5%の破線がはるか下にある

向き実測の最大ランダム200回の最大
17.17%14.37%
18.16%15.17%
右下がり対角40.29%26.83%
右上がり対角37.31%29.27%

全体の素数密度は8.81%。横と縦でも最大17〜18%になるが、ランダム対照でも14〜15%までは出る。明確に差がついたのは対角線だけだった。

ここで警戒すべき点がひとつある。短い直線ほど「たまたま濃い」が起こりやすい。40.29%を出したのは長さ139の線だった。長い線だけで比べたらどうか。

対角線の長さ最も濃い線の素数率
40〜15040.3%(長さ139)
150〜30039.4%(長さ249)
300〜50139.3%(長さ443)

長さで区切ってもほとんど変わらない。そして長さ300以上の対角線に限って対照実験をやり直すと、ランダムの最大は200回で15.46%。実測の39.28%には200回中0回しか近づかなかった。

斜めの線は本物だ。

なぜ斜めなのか

濃かった対角線(長さ443)の上に並ぶ数を取り出すと、249943, 247947, 245959, 243979, 242007, … となる。階差を2回取ると8で一定(1箇所の継ぎ目を除く)。つまりこの線の上には、4n2+bn+c4n^2 + bn + c という形の2次式の値が並んでいる。

渦巻きの構造上、対角線を1歩進むごとに数が 4n4n ずつ増えていくので、対角線とは2次式そのものになる。だから「斜めの線が濃い」は、「ある2次式が素数を出しやすい」という主張と同じことを言っている。

2次式が素数を出しやすくなる理由は難しくない。n2+n+41n^2+n+41 のような式は、小さい素数で割り切れないように係数が選ばれていれば、候補から一気に合成数が消える。逆にたとえば n2+n+2n^2+n+2 はすべて偶数なので素数は出てこない。素数を作る式ではなく、合成数を避ける式というのが実態に近い。

オイラーの多項式は本当に強いのか

素数を出しやすい2次式として最も有名なのが、オイラーが1772年に見つけた n2+n+41n^2+n+41 だ。実際に測った。

左はnの範囲を横軸(対数)、n²+n+41が素数になる割合を縦軸にしたグラフ。n=0〜39で100%、0〜99で86.0%、0〜999で58.1%、0〜9999で51.1%と下がるが、同じ大きさの数が素数である確率を示す破線(5〜8%)よりはるかに上にある。右はcを1から999まで全部試したときの上位8個の棒グラフで、c=41が58.1%で断然トップ、2位のc=941が46.5%

nn の範囲n2+n+41n^2+n+41 が素数の割合最初に素数でなくなる nn
0〜39100.00%なし
0〜9986.00%40
0〜99958.10%40
0〜999951.05%40

n=0n=0 から39まで、40個すべてが素数。41で崩れる(412+41+41=41×4341^2+41+41 = 41 \times 43 なので当然だが)。それでも nn を1万まで伸ばして51.05%が素数のままだ。同じ大きさ(5,000万前後)の数がランダムに素数である確率はおよそ5.64%なので、9倍濃い

そして cc を1から999まですべて試すと、c=41c=41 が58.10%で断然のトップだった(2位は c=941c=941 の46.50%)。250年前に見つかった41は、いまブルートフォースで探し直しても最良のままだった。

まとめ

  • 501×501501 \times 501 のウラムの螺旋で、対角線の最大素数率は40.29%(全体密度8.81%)
  • 同じ密度のランダム対照200回では、対角線の最大は26.83%止まり
  • 長さ300以上の対角線に限ると、実測39.28%に対しランダムの最大は15.46%。200回中0回しか届かない
  • 濃い対角線の上には 4n2+bn+c4n^2+bn+c の値が並んでいる。「斜めの線」は「素数を出しやすい2次式」の言い換えだった
  • n2+n+41n^2+n+41n=0n=0〜39で全部素数、nn を1万まで伸ばしても51.05%。cc を1〜999で全探索しても41が最良

斜めの線は、素数の性質ではなく「渦巻きに並べたことの性質」だった。

素数の分布そのものに斜めの構造があるわけではない。渦巻きに並べると対角線が2次式になり、2次式の中には合成数を効率よく避けるものがある。だから濃く見える。並べ方を変えれば線も消える。

見えた模様が本物かどうかは、対照群を作れば決着がつく。今回は200枚のランダム盤が15.46%までしか届かず、実測は39.28%だったので、模様は本物だと言い切れた。だが本物であることと、それが対象の性質であることは別だった。線は確かにそこにあって、しかもそれは私が渦巻きを選んだから生まれていた。

データに模様を見つけたとき、次に確かめるべきなのは「偶然か」だけではない。「それは対象の性質か、それとも私の並べ方の性質か」のほうも同じくらい効いてくる。