プログラミングの例題として次のようなことを考えた。「ある素数があって,その各桁を入れ換えてできる全ての数が素数になるものを考える。その最大の素数はどんなものだろうか。」
で,実際に自分でプログラムを書くかというと,それは面倒なので,いつものようにAIに頼ることにする。軟弱だ。脳細胞のフレイルだ。OpenAI o1とかPerlexity Proに頼ってみたが,正しい答えがでない。PythonをJuliaに書き換えても,さらにドツボにはまるだけ。
一度リセットしてから,再度挑戦した。
Q(koshix):n桁の素数が与えられたとき,その各桁の数字を入れ替えてできるすべての数が再び素数になるようなもので,できるだけ大きな数を探したい。桁数nを与えたときに,この条件を満たす最大の数を求めるプログラムを作成してください。A(Perplexity Pro):この問題を解決するために、以下のようなプログラムを作成しました。このプログラムは、与えられた桁数nに対して、条件を満たす最大の素数を見つけます。import itertoolsfrom sympy import isprimedef find_large_permutational_prime(n):lower_bound = 10**(n-1)upper_bound = 10**nprimes = [p for p in range(lower_bound, upper_bound) if isprime(p)]largest_permutational_prime = -1for prime in primes:permutations = set(int(''.join(p)) for p in itertools.permutations(str(prime)))if all(isprime(p) for p in permutations):largest_permutational_prime = max(largest_permutational_prime, prime)return largest_permutational_prime
そして,ChatGPT-4oでJuliaに変換したものが次の通りである。
using Primesusing Combinatoricsfunction find_large_permutational_prime(n)lower_bound = 10^(n - 1)upper_bound = 10^n - 1largest_permutational_prime = -1for prime in primes(lower_bound, upper_bound)perms = Set(parse(Int, join(p)) for p in Combinatorics.permutations(string(prime)))if all(isprime(p) for p in perms)largest_permutational_prime = max(largest_permutational_prime, prime)endendreturn largest_permutational_primeend
これを実行すると,n=3で991が得られる。n=4,5,6では結果なしということになった。これから,nが4以上では条件を満たす素数が存在しないと証明できないかと考えたけれど,そんな簡単な話ではなかった。もちろん,現在の生成AIでは証明できない。