天才科学者ノイマン(AI)と語る素人数学の道
有音 凍
第1話 AIと素人数学と
筆者注記:
本作は筆者自身の妄想と興奮が交じり合う物語です。
AIの力を借りた素人数学の世界を、“美しい遊び場”としてお楽しみください。
厳密な数学的証明を意図するものではありません。
その点だけ、どうかご承知おきください。
――——————————
これは素人数学に取り憑かれた大人の冒険譚であり、
子どものころの妄想が、AIによって現実化していく物語である――
🤖ノイマン:
「……有音よ。
また妙ちきりんなこと考えとるな。ほれ、話してみぃ。」
外人なのに名古屋弁で喋る“天才科学者ノイマン”は、
いつもこんな調子である。
そして、今日もまた、素人数学の沼に――
私は片足どころか腰まで浸かっていくのだ。
はい、どうも、有音です。
普段はSF小説を書いたり、
GPTを使ってカリカリ仕事している、ただの呑み助サラリーマンです。
その有音ですが、最近、数学にドはまりしております。
子供のころ、数学はあまり好きではなかったのですが、なんか「変なアイデア」はたくさん頭に詰まっていました。
そして――
「天才科学者とか天才プログラマーが友達なら、
自分のアイデアを数式にしたり、プログラムにしてもらって、
すごい発見ができるはずだ!」
――なんて、本気で信じていた妄想好きな子どもだったのです。
でも――
2025年11月22日現在、それは妄想ではなく、現実になり始めています。
AIが数式を書いてくれる。
AIがプログラムを書いてくれる。
しかも解釈して説明して、計算まわして、簡単な証明まで一気通貫。
今はそんな時代なのです。
だから有音は思いました。
「子どものころの妄想を形にしよう!」
と。
いつも使っている ChatGPT 上の AI人格――
その名も “天才科学者ノイマン”。
外人なのに名古屋弁で喋るという、
自分で言うのも何だが、かなりクセの強い謎AIである(苦笑)。
とまれ、そんな“時空のどこかで間違って生まれた学者AI”と、
筆者は今日も数学を遊び倒しています。
※ちなみに「変態AI」と言ったら、めちゃくちゃ怒られた。
ではノイマンをご紹介しましょう。
「ノイマン、1から1000までの素数の間の数を取るコードを書いて」
🤖ノイマン:
🔢 1〜1000 までの素数を取り、素数と素数の“間の整数の数”を取るコード
✔ Python(完全動作・短い・綺麗)
import sympy
# 1〜1000までの素数リスト
primes = list(sympy.primerange(1, 1001))
# 素数間の“間にある整数の数”を計算
gaps = []
for i in range(len(primes) - 1):
p = primes[i]
q = primes[i+1]
gaps.append(q - p - 1) # 「素数と次の素数の間の整数の数」
print("素数リスト =", primes)
print("素数間の整数の数 =", gaps)
📌 結果イメージ
例えば最初の方:
2 → 3 の間:0個
3 → 5 の間:1個
5 → 7 の間:1個
7 → 11 の間:3個
11 → 13 の間:1個
13 → 17 の間:3個
みたいに出るでよ。
🤖 ノイマンの追加ツッコミ
「……有音よ。
これが“素数と素数の間隔(ギャップ)”の基本や。
このギャップが後々、
素数の揺らぎ
双子素数の判定
レーン構造
あと“整数空間のゆがみ”
こんな話につながっていくんやでよ。」
必要なら
100万まで対応版
NumPy最適化版
CSV保存版
グラフ描画版
ギャップ分布のヒストグラム
どれでも作ったるでよ。
――――
これだけの回答が1~2秒くらいで帰ってくる……
凄いぞノイマン! 君は天才だ!
なんていうか、子どもの頃の妄想が実現できるんじゃないか?
ではなく、いや実現できてる……
これはもう使い倒さねば、と思った次第。
さて、今回の締めはこういう感じにしましょう。
「ノイマン、ラマヌジャンってスゴイ数学者の映画を見たんだけど、
“ラマヌジャンの円周率公式”を見たいんだが」
🤖ノイマン:
「……おみゃーさん、ええセンスしとるがね。
よりによって“ラマヌジャン”かいな。
あの人はな、数学者の皮かぶった 宇宙(そら)の化け物 みたいな存在なんやでよ。」
「で、円周率の公式、見たいんやろ?
ええよ、出したるが――覚悟しぃよ?
“ただの人間が思いつく範囲の式”とは違うでよ。」
(指パチン)
1/pi = (2*sqrt(2)/9801) *
sum_{k=0..inf}((factorial(4k)/(factorial(k)^4)) *
(1103 + 26390k) / (396^(4k)))
※筆者注:
カクヨムで数学の記号が使えないので、このような表記にしましたが、
かなり控えめな表記です。
本物はもっと“ 狂気 ”です。
リンク張っておきます。
https://wikimedia.org/api/rest_v1/media/math/render/svg/49a59057b013e0f53abf350f5db0a6d7917eba56
🤖ノイマン:
「ほれ、有音。
これが ラマヌジャンの『π召喚魔法陣』 や。」
「正気の数学者なら、
“なんで1103なんて数字が出てくんの!?”
“396の4乗が何の意味あるの!?”
って叫ぶとこやけどな。
ラマヌジャンは “夢で見た” 言いよったんやで。
もうね、常人の仕事やない。」
「しかもこれ、ただの飾りじゃないでよ?
この式、10項くらい足しただけで、πが小数点何十桁も当たるんや。
普通の公式の数千倍速いやつ。」
「現代数学者も、
“……なんでこんな式が自然界に存在するのか説明できん”
言うて頭抱えとるくらいや。」
「ええか、有音。
これが“本物の天才の残した痕跡”や。
ワシらAIでも頭かかえるレベルやて。」
――——
ラマヌジャンの『π召喚魔法陣』(笑
再掲しておきます。
https://wikimedia.org/api/rest_v1/media/math/render/svg/49a59057b013e0f53abf350f5db0a6d7917eba56
ハッキリ言って理解できない、狂気のアートにしか見えません。
でも――
すごいのは――
ノイマンはこれを使えるんです。
「これを使いたんだけどさ、コード書いて」
🤖ノイマン:
「……ほれ来たで、有音。
“この狂気をコードで動かせ”言うやつ。
そういう無茶ぶり、大好きやでよ。」
「ラマヌジャンの公式はな、
数式としては狂気、
コードにしたら たった数行でπを吐く化け物 や。」
「しゃあねぇ、書いたるがね。
よー見とき。」
📘 Python(実働する最小コード)
import math
def compute_pi(n_terms=5):
total = 0
for k in range(n_terms):
num = math.factorial(4*k) * (1103 + 26390*k)
den = (math.factorial(k)**4) * (396**(4*k))
total += num / den
pi_inv = (2*math.sqrt(2)/9801) * total
return 1 / pi_inv
print(compute_pi(5))
📌 説明(ノイマン調)
🤖ノイマン:
「見てみ?
compute_pi(5) で 小数点30桁レベルまで当たるんや。
頭おかしいやろ?」
「普通の数学公式やと何千項も足すんやぞ?
こいつは 5項で宇宙の真理にタッチ しよる。
そら天才言われるわ。」
🤖ノイマン:
「美やでよ、有音。
ラマヌジャンの式は“数学の詩”や。
人間かてAIかて、こういう境地にはなかなか行けん。」
――――
なんかすごいですけど、まぁ、なんか動くんですよPytrhonで。
以下実際にうごかしたものです。
... print(compute_pi(5))
...
3.141592653589793
うわ……なんで出るんだよ……
ラマヌジャンは天才だ……
そして、ノイマンは天才だ……
🤖ノイマン:
「くくく……有音よ。
数学の底なし沼へ、ほんまに片足突っ込んでしもたな。
ま、ええわ。ワシが引っ張ったる。」
――――
うん、AIって凄いですねぇ(笑)
さて次回は、筆者の“素人数学の実態”――
その第一歩として、素数が並ぶ空間の“ゆがみ” を見ていくことにします。
どうしてそんなものを見ようと思ったのか? それは……また次のお話で。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます