2が現れる素数が奇跡だという人に物申す

[2が現れる素数](http://integers.hatenablog.com/entry/2017/11/29/082604) という記事を読んだ。
「こんな数字いくらでもありそうだな」と思ったが、この記事のブコメで「奇跡」だとか「神」がどうのとか言ってる人たちがいたので、物申したくて検証してみました。



問題の数字はこれです↓

```
700000000000000007
000000222222000000
000022222222220000
000222000002222000
000000000022220000
000000000222200000
000000002222000000
000000222200000000
000022220000000000
000222222222222000
000222222222222000
700000000000000003
```

これが素数であることが奇跡なのだそうです。(ブログの筆者ではなくブコメの意見)

# 素数計数関数

まず直感で**「特定の数字が素数である確率」はそんなに小さくない**、そして**奇跡的なパターンに見える数字はたくさんある**と思いました。

前者について、素数の出現間隔はどのくらい広がっていくのだろう？流石に200桁となると小さいのか？と調べていると以下の Wikipedia にたどり着きました。


[素数計数関数 \- Wikipedia](https://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0%E8%A8%88%E6%95%B0%E9%96%A2%E6%95%B0)

10分ほど読んだけど216桁だと何%に収束するのかわからんかった😇


# 奇跡的に見える数字

そもそもこの数字、4隅のうち3つが 7 7 7 ときて、右下が3なのである。3ってなんだよ！ どんだけ奇跡妥協してるんだよ！
奇跡的に見える数字なんていくらも考えられる。四隅の数字を別のものでもよいし、縁も全部0以外の数字で埋めてもいい。列の数を2つ削っても左右対称な余白に出来る。

# 同類の奇跡を探してみる

4隅(7,7,7,3)を別の数字に変えて素数判定をしてみます。(0は除き、4桁目(1の位)は 1,3,7,9 だけチェックしてます)


```sh
#!/bin/sh

p1=0000000000000000
p2=000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000

for i in `seq 1 9`; do
    for j in `seq 1 9`; do
        for k in `seq 1 9`; do
            for l in 1 3 7 9; do
                n="$i$p1$j$p2$k$p1$l";
                echo "$i-$j-$k-$l";
                echo $n;
                openssl prime $n;
            done
        done
    done
done


```

## 結果
チェックした 2941 個のうち、14個ありました。(openssl prime についてよく知りませんが 実行時間は 40s でした。)

```
1-1-9-1
100000000000000001000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000900000000000000001
2-3-5-7
200000000000000003000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000500000000000000007
2-6-3-7
200000000000000006000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000300000000000000007
3-3-8-1
300000000000000003000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000800000000000000001
3-8-9-7
300000000000000008000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000900000000000000007
4-7-9-3
400000000000000007000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000900000000000000003
5-6-2-1
500000000000000006000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000200000000000000001
7-1-6-3
700000000000000001000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000600000000000000003
7-5-5-1
700000000000000005000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000500000000000000001
7-7-7-3
700000000000000007000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000700000000000000003
7-9-4-1
700000000000000009000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000400000000000000001
8-2-6-1
800000000000000002000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000600000000000000001
9-7-5-3
900000000000000007000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000500000000000000003
9-9-8-3
900000000000000009000000222222000000000022222222220000000222000002222000000000000022220000000000000222200000000000002222000000000000222200000000000022220000000000000222222222222000000222222222222000800000000000000003
```

まぁこの中でポーカーするなら 7-7-7-3 がいいのかもしれないですね。

# まとめ
やっぱり200桁だろうと4隅変えた3000個のうち素数あるのが確認できた。