4以上の偶数は、2つの素数の和で書けるという命題が正しいことを、小さい偶数から調べて行き、反例があったら止まるプログラム

4以上の偶数は、2つの素数の和で書ける、という命題を初めて私が見たのは、もう35年以上前であり、中学生のときでした。『ゲーデル、エッシャー、バッハ』という本を読んでいて出会いました。その本は、ゲーデルの不完全性定理の紹介を目的とした本でしたが、整数にかんする命題で、現時点で真とも偽とも言えない命題の例として使われていました。これは、ゴールドバッハ予想といい、それから35年くらいが経過する現在でも、未解決問題であるようです。
例を挙げますね。4は2たす2であり、6は3たす3であり、8は3たす5であり、10は3たす7でもいいですし、5たす5でもいいわけです。このように、あらゆる4以上の偶数は、2つの素数の和で書けるのではないかという予想です。
そして、中学生であった私はそのころ、家にあった古いパソコンで、BASICというものを知っており、この命題を、小さい偶数の順に、正しいかどうか調べ、反例があったら止まるプログラムを書きました。
ずっとのちのことです。四半世紀以上の年月が過ぎ、2017年、私が41歳のとき、私は勤めていた学校で、情報科の実習助手をさせられていました。このとき、プログラミングの授業があったのです。高校2年生の皆さんが、プログラミングに取り組んでいます。私も書いてみました。このとき、中学のときに書いた上記のプログラムのことを思い出し、書いてみました。書けました。中学のときの自分に追いついた気がしたものです。生徒さんのなかで、このプログラムを書ける生徒さんはおらず、かろうじて「与えられた数未満の素数をすべて出力する」というプログラムを書いた生徒さんは、京都大学へ現役合格なさったと聞いています。
それからまた時間が経過します。私は何回かの休職と配置換えを経て、2020年から長い休職となりました。2021年、就労移行支援事業所と言われる障害者福祉で、エクセルを学びました。それで、VBAという言語を学び、みたびこのプログラムを書きました。以下にコードをさらしますね。
Sub ゴールドバッハ予想()
Dim a As Long
Dim b As Long
Dim aa, bb As String
Dim i As Long
Dim j As Long
Dim p As Long
Dim q As Long
Dim n As Long
Dim m As Long
Dim s As Long
Dim i2 As Long
Dim n2 As Long
Do
aa = InputBox(“いくつから始めますか。4以上の整数を入力してください。”)
a = Int(Val(aa))
Loop Until a Mod 2 = 0 And a >= 4
Do
bb = InputBox(“いくつまで調べますか。入力された数以下の整数まで調べます。”)
b = Int(Val(bb))
Loop Until b >= a
Range(“A1”).Select
Do While a <= b
Do While i <= a
For i = 2 To a
n = 0
For j = 1 To i
If i Mod j = 0 Then
n = n + 1
End If
Next
If n <= 2 Then
‘ ここは非常に想像通りのものが出た。ここまでは間違っていない
‘ ActiveCell = i
‘ ActiveCell.Offset(1).Activate
p = i
End If
‘ Next
‘ ActiveCell = p
‘ ActiveCell.Offset(1).Activate
q = a – p
If q <= 1 Then
MsgBox “反例が見つかりました!” & a & “です!”
Exit Do
End If
n2 = 0
For i2 = 1 To q
If q Mod i2 = 0 Then
n2 = n2 + 1
End If
Next
If n2 <= 2 Then
ActiveCell = a & “=” & p & “+” & q
ActiveCell.Offset(1).Activate
Exit Do
End If
Next
Loop
If q <= 1 Then
Exit Do
End If
a = a + 2
Loop
End Sub
それから、このプログラムを走らせたところをご覧に入れます。一部分です。

小さい素数の順で調べていますので、こうなるわけです。これだけ見ますと、いかにも成立しそうな予想ですね?
整数を扱う数学の分野は、私の専門分野ではありませんが(私の大学院での専門は位相幾何学でした)、このようなプログラムを書いていたこともあるというお話でした。よろしければ皆さんも書いてみてくださいね。それではまた!