脱線だらけの数論

チラ裏 i > 数論

「チラ裏」は、きちんとまとまった記事ではなく、断片的なメモです。誤字脱字・間違いがあるかもしれません。

数論(メモ)の目次

数論

2020-07-26 谷山予想(フェルマーの最終定理を含む)を証明したコンラッド

…というと雲の上の人のようだが、数学の世界に貴賎(きせん)はない。拡張ペル方程式に関連して、Brian Conrad のテキストの主定理の改善に成功した!

まず旧バージョン(2017年)の上界。
PNGファイル

こちらが新バージョン(2020年)の上界。数時間前に思い付いて、速攻メール。教授も同意、たまたま日曜だったせいか、ものすごい勢いでテキストが更新された。
PNGファイル
この強い上界を使うと、検索が有意に高速化するばかりか、冗長な「同値解」が出にくくなる。ブルートフォースから生まれた「野蛮流」も、とうとう世界的数学者のお墨付き?(笑)な~んてネ…単なるワンアイデアだが、うまいショートカットが見つかると普通にうれしい。

http://virtualmath1.stanford.edu/~conrad/154Page/ ここにある Generalized Pell equation のファイル。証明の道筋が非常に面白いけれど、バリバリの代数的整数論の言葉で書かれていて、このファイル自体は一般向けではない。しかし「ごく普通の高校生にも十分理解できる」ような普通の言葉で説明可能なので(数学が好きなら中学生でも分かる)、できれば近々一般向けの記事にしたい。

↓思い付いたときのメモ。使用済みルーズリーフの、字が書いてない隙間に走り書き。
JPGファイル

2020-07-27 コンラッドの不等式について

誰にでも意味が分かるような、シンプルな問題。例えば…
x2 − 79y2 = 5 は整数解を持たないことを証明せよ」
左辺の xy にどんな整数を入れても、右辺は5にならないんだよ~と。ちょっと試せば確かに解は見つからないが、もしかして、この式を満たすような100桁くらいの巨大な解があるかもしれない。「そんなものは絶対存在しない!」と数学的に証明するのは、決して簡単ではない。

必要な予備知識は対数関数の基本だけ。でもこの証明は「普通」の数学の発想とは、あさっての方角に懸け離れている。数論が好きな人でも初めて見ると「不思議な証明だなぁ」と感じるかもしれない。本質的に代数的整数論の世界だが、ちょっと感覚が違う点がある(だって普通、二次体の整数論の入門的部分に、対数関数なんて出てこないでしょう)。

一定の場合には、剰余演算さえ導入すれば、この手の問題は易しい。上記の例は、その手法が使えないケース。平方根の連分数展開を使う方法もあるが、右辺の整数の絶対値が大きい場合、実用上、話がややこしくなる。「解があれば、必ずこの範囲にある」という明示的な範囲指定をして、その範囲を探す…というのが、面白いアプローチ。種を明かせばレギュレーターというか、単数定理の埋め込み写像的な発想なんだろうけど、拡張ペルの解をある方法で平面に配置すると等間隔で並ぶ。その間隔を1とすると、必ず一定の場所からずれが1/2以下になる解を選べる。従って、解が存在する場合、最小解の x が取り得る範囲は有限なのである。

この説明だけでは、何のことやら…? とにかく不等式で x の範囲を指定できる、という方向で…

コンラッドは c2(α) の絶対値が 1/2 以下という状況を作って、
【+】 log | x + yd | = (1/2) log | n | + c2(α) log u ≤ (1/2) log | n | + (1/2) log u
【-】 log | x − yd | = (1/2) log | n | − c2(α) log u ≤ (1/2) log | n | + (1/2) log u
と評価していた。確かに ±c2(α)−1/2 以上 1/2 以下なので、どちらにしても ±c2(α) ≤ 1/2 であり、上記のようになる。どちらの右辺も log (| n |u)1/2 に等しいことに注意しつつ、これらを全部 e の肩に乗せ、辺々足し合わせると
2x ≤ 2(| n |u)1/2
となり、その両辺を2で割ると2017年版のシンプルな上界を得る。

しかしもし c2(α)0 以上だったら(仮定1)どうだろう。そのときは c2(α) log u ≤ 0 なので【-】の式の不等号の右側、一番右端の項 + (1/2) log u を落とす(なくす)ことができる(log u > 0 であることは分かっている)。あるいはもし c2(α)0 未満だったら(仮定2)どうだろう。同様の理由から、今度は【+】の右端から + (1/2) log u を落とすことができる。仮定1と仮定2のどちらか一方は必ず成り立つのだから、いずれにしても、どちらか一方の式から + (1/2) log u を落とすことができる。双子の不等式のうち、一方については確かに log (| n |u)1/2 以下としかいえないが、他方についてはもっと本気を出して Gyu! と押さえると log (| n |)1/2 まで縮む。こうして改善された評価について、最初と同じように、e の肩に乗せ、辺々足し合わせて2で割ると、2020年版の強い上界を得る。どっちの式から + (1/2) log u を落とせるのか確定できないが、どうせ足し合わせて2で割るのだから、どっちがどっちでも構わない。

これで分かるように、「コンラッドの主定理を改善」といっても、その中身は単純で小さなアイデアにすぎない。このアイデアがどこから来たかというと…。まず仮定1を考えた。【-】左辺の c2(α) log u は事実として 0 以下なのに、それをわざわざ + (1/2) log u 以下だと評価するのは「もったいない」と感じた。けれど c2(α) は負かもしれず、仮定1が成り立つ保証はないので、一般論としては、最悪のケースでも大丈夫なように、そう評価するしかないのか…。ん、待てよ。仮定1が偽なら、自動的に仮定2が成り立つんだから…。という流れ。

単に技術的に上界を改善できるだけでなく、多くの場合、これによって検索結果から冗長性を排除できる。この副産物が数学的には一番大きいかもしれない。

2020-07-31 双子の数学者

谷山予想の Brian Conrad と、コネチカットの Keith Conrad は、どちらも数論研究者で、きょうだい。確認はできなかったが、ウィキペディアによると双子らしい。

Keith Conrad のサイトは宝箱のよう。面白いものがいっぱいある。専門的なものも多いが、初心者向け・中級者向けのものも…。
https://kconrad.math.uconn.edu/blurbs/
拡張ペル方程式の話題もあって、こちらは(Brian Conrad版と違い)一般向けとして、お薦めできる。
https://kconrad.math.uconn.edu/blurbs/ugradnumthy/pelleqn1.pdf
https://kconrad.math.uconn.edu/blurbs/ugradnumthy/pelleqn2.pdf

Brian Conrad の不等式を改善してメールを送ったとき、最後に一言「話がうま過ぎるような気もするので、間違っていたらご教示ください」とコメントした。そりゃそうでしょう、常識で考えれば、素人考えでコンラッドの上界を1/2に改善できるわけなく、何かの初歩的な勘違いが疑われる。けれど教授からは「私もそれに同意します」という返事が来て、あれよあれよという間にテキストが更新された…。これまでも、他の数学者・物理学者・シリア語学者などに、ちょくちょくちょっとしたミスを報告してはいたのだが(あら探しというよりお礼の意味で)、こんなふうに、実質的な寄与をできたのは初めてかもしれない。Brian Conrad は、双子の Keith Conrad にもこの結果を連絡したらしく Keith Conrad から「兄(弟?)から聞きました」とメールが来た。そんなわけで、チラ裏お遊びの副産物により、スタンフォードとコネチカットの2カ所でテキストが改訂された。ひょうたんから駒というか…純粋に遊びでやっていたことが、思わぬ展開。

調子に乗ってもうちょっと考えたところ、n が正の場合に限ると、改善された評価をさらにもう少し改善できそうな感じ。Keith Conrad の方にその話をしてみたところ「自分としては、正の場合と負の場合の両方に当てはまる不等式の方がいいと思うので、1回目の改善版のままでいく」とのお返事をいただいた。

きょうだいで数学者といえば、Lenstra もそうで、こちらは確か4人きょうだいくらい。それぞれいろいろ活躍しているようだが、一番有名なのは、何と言っても楕円曲線法の Hendrik Lenstra でしょう。その発想のインパクトは、狭義の数学にとどまらず、インターネットの認証の Ed25519 にも結び付いていて、すなわち目に見えないところで日常的に使われている。そして、この楕円曲線法の初期には、日本のスヤマという人が、小さいけれど重要な貢献をしている(多分アマチュアだと思われる)。だから「アマチュアの遊び」だからといって、侮れないんじゃないかな…。

だけどね…

インドでは子どもでも知ってる有名な言葉(ギーター)…

「カルマンニェーヴァーディカーラス、テー。マー、パレーシュ…」(作業の中にこそ、そなたの権利はあれ。結果の中にではなく…)

すなわち「正しいと思われることをしていい。それがあなたの唯一の権利である。その結果(甘い果実か苦い果実か、名誉か不名誉か、成功か失敗か)については、あなたには何の権利もない」。

カルマンニェーヴァーディカーラス、テー。マー・パレーシュ。カダーチャナ…
マー・カルマパラ・ヘートゥル、ブール。マー、テー・サンゴー、ストヴァカルマニ
 そなたはただわざをなせ。成り行きは天意なり、
 そなたのものにあらざる。それでもなさねばならぬぞ。

「自分は今何をするといいのだろう。それを思い、やってみる。あなたにはその権利がある。けれど、その結果がどうなるかについては、あなたには何の権利もない。神の気まぐれは、あなたの管轄事項ではないのだから。余計なことを考えず、成り行きに任せておけばいい。だが達成しようとすることをやめてはいけない。どうせあなたは明日くらいに死ぬ人間。来年の果実を受け取れるかどうか気にしても仕方ない。心を静め、今日できるちょうどいい分量を今日やっておきなさい」

もちろん物事がうまくいけばうれしいだろう。でも結果がどうなるかは自分の問題ではなく、だから「成功して何かを残したい」といったことを動機にしてはいけない。とはいえ、別次元の問題として、スタンフォードの教科書を書き換えた(?)とか大げさに言えば、権威に弱い日本人はびびるかもしれない。そこに付け込んで「アスペだサバンだと自閉症圏の者をばかにするのは、やめてもらおう」と主張するのは許されるだろう。実際、呼吸するようにコードを書くわたしたちがいて、現代のネット社会が回っているのだから。クヌースだってそうなのだから(笑)。ばかとはさみは使いよう。というより、この種族がいなくなると、自称健常者諸君だけでは、もはや世界は回らない…

2020-09-28 中学生でも分かる?コンラッドの不等式(メモ)

ここで「コンラッドの不等式」というのは、Conrad が発見したのかどうかは知らないが、Brian Conrad が書いた数学のテキストで証明されている不等式。

(説明)・・・

「nを0ではない整数、Dを平方数ではない正の整数とする。x^2−Dy^2 = n (☆)の整数解 x, y が存在するか。存在するなら一般解を求め、存在しなければ存在しないことを証明せよ」というタイプの問題を「拡張ペル方程式」という。

ここで n と D は、問題ごとに固定されている。例えば「x2 − 109y2 = 12 に整数解があるか。あるなら求めなさい」というタイプの方程式を考えている。

今 s と t を s^2−Dt^2 = 1 を満たす正の整数として(これは必ず存在する)、u = s+t√D, m = |n| と置く。(☆)に解があるなら、その一つは必ず |x| ≤ √(mu) の範囲にあり、本質的に異なる2種類以上の解があるとしても、必ずそれらは全部この範囲に現れる。これが「コンラッドの不等式」(2017年版)の概要であり、つまり「0以上、√(mu) 以下の整数を順に(☆)のxに入れて、yが整数になるかどうかを調べる」という単純処理によって、拡張ペル方程式は、原理的には有限時間で100%解ける。「解ける」というのは、もちろん「解なし」が答えになる場合も含む。

・・・(説明終わり)

これは素晴らしい。そのような不等式がないと、どれだけ(☆)の解を探しても…例えば「0以上1兆以下のどの整数をx, yに入れても(☆)は成り立たない」としても…「もしかすると1兆より大きい解があるのかもしれない」という可能性を否定できず、問題が有限時間で解決しないのだから。しかしコンラッドの不等式(2017年版)には短所もあった。それは「この範囲を探すと、本質的に同じ2組の解が重複して別々に検出されてしまうことが多い」ということ。「本質的に同じ」かどうかは、別途チェックすればいいことなので、大きな妨げにはならないのだが…。実は、この不等式の上界は改善できる。√(mu) まで探さなくても、およそ半分の範囲、(1+√u)√(m)/2 まで探せば十分(一定条件下では、この上界をさらに改善できる可能性がある)。半分の範囲で十分なのに、その2倍の範囲まで探していたのだから、2017年版で重複検出が起きやすかったのは当然と言えるだろう。この改善は比較的最近…今年(2020年)の7月26日(日本時間では27日朝)に発見された。

「ごく普通の高校生にも十分理解できる」ような普通の言葉で説明可能なので(数学が好きなら中学生でも分かる)、できれば近々一般向けの記事にしたい…とそのときチラ裏にメモしたが、それっきりになっていた。しかし今日、9月28日になって、コンラッドの証明を簡単化して、中学生でも分かるように説明できるかもしれない道筋を思い付いた。オリジナルのコンラッドの証明は、代数的整数論を応用するもので、それなりに難しいのだが、一応、ベクトルの線型独立の概念があれば、あとは対数関数の初歩だけで足りる(二次体や基本単数やノルムの概念を使わずに証明可能)。高校生なら、ベクトルの足し算は普通に知っているのだから、一応理解に支障ないはず。…とはいえ「平面上で、線型独立な2個のベクトルの線型結合で任意の点は表現可能」というのは(知っている人にとっては当たり前のことだが)予備知識を仮定しない一般向けの説明としては、ちょっとむずい…。ベクトルの概念から順に説明するのは可能だが、かなり長くなるし、線型独立を1回使いたいだけのためにそれをやるのは大げさでもある。代わりに、次のようにしたら、分かりやすいかな…と。

任意の2個の実数AとBが与えられたとき、A=q+r, B=q−r を満たす実数 q, r が存在する」…これなら中学生でも理解できそうだよね。普通に連立方程式を解けば q=(A+B)/2, r=(A−B)/2 となり、確かに条件を満たしている。

で(☆)の解 x, y があったとして A = log |x+y√D|, B = log |x−y√D| について同様のことを考えると、
q = (log |x+y√D| + log |x−y√D|)/2 = (log |x^2−Dy^2|)/2 = (log m)/2
は固定され、r についてもある値になるが、もし(☆)が解を持つなら「rの絶対値が1/2以下であるような解が必ずある」。これだけでは全然説明になってないが、とりあえずメモ。(☆)に解が1個でもあれば、それと本質的に同じ解が無限個あって、それらについて log |x+y√D| の値を考えると、数直線上で間隔1できれいに並ぶ点・点・点になる。間隔1で並ぶので、どう配置しても、どれか1個が幅1の区間 (−1/2, 1/2] に入る。これが証明の核心かも。ここで log の底は何でもいいのだが、u を底とするのが、上記の簡単化の「みそ」。

中学生にも分かるようにするためには log を説明する必要があるが、それは比較的簡単にできるだろう。

(追記: 上記のアイデアの中身については、2020年10月30日のメモ参照。)

2020-09-30 x^2−10y^2=89 について

u = 19+6√10。弱い上界(2018年版)は58、この範囲を検索すると (x,y) = (27,8), (33,10) の2種類の解が得られる。2020年7月26日の強い上界は33なので、実際には33まで探せば十分で、この場合、同じ結論が得られる。この2種類の解は、本質的に異なるのだろうか、それとも本質は同じで、単に実二次体の単数倍による「粗製乱造」だろうか。第1解から、任意の整数 k に対して
xk + yk√10 = (27+8√10)(19+6√10)k
は、第1解と本質的に同じ。k = −3, −2, −1, 0, 1, 2, 3 についてこれを計算すると
x−3 + y−3√10 = (27+8√10)(19+6√10)−3 = 46593 − 14734√10
x−2 + y−2√10 = (27+8√10)(19+6√10)−2 = 1227 − 388√10
x−1 + y−1√10 = (27+8√10)(19+6√10)−1 = 33 − 10√10
x0 + y0√10 = (27+8√10)(19+6√10)0 = 27 + 8√10
x1 + y1√10 = (27+8√10)(19+6√10)1 = 993 + 314√10
x2 + y2√10 = (27+8√10)(19+6√10)2 = 37707 + 11924√10
x3 + y3√10 = (27+8√10)(19+6√10)3 = 1431873 + 452798√10
となるので x = 27, 33, 993, 1227, 37707, 46593, 1431873 などは「符号を無視すれば、本質的には同じ」。符号を無視しなければ、33 + 10√10 は (27−8√10)(19+6√10) に等しく、つまり (33,10) は (27,8) と同値ではないが (27,−8) と同値。

「2種類」の解といっても自動的に (27,±8), (33,±10) の「4種類」が得られている。その4種類を同値類で分類すれば2種類しかないので、これは冗長(重複検出)だろう。ここで「2組の解が同値」というのは「それらに対応する2個の代数的整数が、単数倍の違いしかない」という意味。

2020-10-30 コンラッドの不等式(メモ2)

2020年9月28日のメモにあるアイデアは、具体的には以下の通り。次のように進めれば「ベクトル」や「線型独立」の概念を使わずに、この不等式を導ける。

s, t をペル方程式 s^2 − Dt^2 = 1 の正の整数解として、u = s + t√D と置く。u > 1 である。

【1】 log の底を u とする。ゼロでない任意の2個の実数 z, z′ について
log |zz′| = log (|z||z′|) = log |z| + log |z′|。
今 g(z) = log |z|
と書くと
g(zz′) = g(z) + g(z′)。
ところで log の定義から、任意の整数 N について g(u^N) = N。

【2】 任意の2個の実数 a, b が与えられたとき、q = (a+b)/2, r = (a−b)/2 と置くと、a = q+r, b = q−r が成り立つ。

【3】 x, y を拡張ペル方程式 x^2 − Dy^2 = n の解だと仮定する。
a = log |x + y√D| と b = log |x − y√D| について、【2】によって、実数 q, r が存在して a = q+r, b = q−r と書ける。ここで:
q = (log |x + y√D| + log |x − y√D|)/2
= (log |x^2 − Dy^2|)/2 = (log |n|)/2。

【4】 上記の実数 q は、与えられた拡張ペル方程式の右辺 n に対応して固定されている。ところで、
a = g(x + y√D) = log |x + y√D| = q+r
という対数は、拡張ペル方程式のある1組の解 x, y と対応しているが、この対数に任意の整数 N を足した数もまた、同じ拡張ペル方程式の別の解と対応している。なぜなら
x + y√D
が解が表すなら、
(x + y√D)(u^N)
はそれと本質的に同じ解を表していて、【1】から次が成り立つ:
g((x + y√D)(u^N)) = g(x + y√D) + g(u^N) = g(x + y√D) + N

【5】 すなわち解が実際にあったとして、上記 q+r をその解に対応する対数だとすると、それに …, −3, −2, −1, 0, 1, 2, 3, … を足したものは、どれも解に対応する対数である(それぞれ別の解に対応している)。ただし q は固定されているので、この観察は「r を1刻みで勝手に変動させても、その結果は依然として、拡張ペル方程式の解のどれかと対応している」という意味になる。すると、自分勝手に解を1個選んでいい…という局面では、初めから r は (−1/2, 1/2] の範囲に入っていると仮定しても差し支えない。実際にはその範囲外だとしても、任意に整数を加減できるのだから、その結果が範囲内になるように加減してから、その結果をあらためて r と置けばいいわけである。すなわち、そもそも解があるとすれば、r の絶対値が1/2以下であるような a = q+r と b = q−r を選ぶことが常に可能であり、それに対応する解 x, y が存在する。このとき
a = log |x + y√D| = q + r = (log |n|)/2 + r ≤ (log |n|)/2 + 1/2 【ア】
b = log |x − y√D| = q − r = (log |n|)/2 − r ≤ (log |n|)/2 + 1/2 【イ】
とするのが、2017年のコンラッドの不等式の出発点。【ア】の不等号は、r が1/2以下なのだから、直観的には「そのまんま」。【イ】の不等号は、せっかく r を引き算しているのに「プラスの」1/2で上から押さえるのは「もったいない」というか「余裕を見過ぎている」気もするが、実際問題 r は負かもしれず、分かっているのは(大ざっぱに言えば)絶対値が1/2以下というだけ(詳しく言えば「以下」を「未満」にできるが、実用上、どちらでも同じ)。この考え方では、結局 +r でも −r でも、不等号の上限は同じ値になる。log の底が u だったことを思い出すと:
log |x + y√D| ≤ (log |n|)/2 + 1/2 * log u = (log |n| + log u)/2
|x + y√D| ≤ (|n|u)^(1/2) = √(|n|u)
同様に:
|x − y√D| ≤ √(|n|u)
辺々足し合わせて2で割ると:
|x| ≤ √(|n|u)

これが2017年版の結果だった。

【6】 2020年7月の改良版コンラッドの不等式は、次のようにして導かれる。もし r が負でなければ【イ】の評価は確かにもったいない。その条件なら
log |x − y√D| = (log |n|)/2 − r ≤ (log |n|)/2 【イイ】
とできる。実際には r が負でないという保証はないけれど、r が負なら負で、そのときはその性質を活用して【ア】の方を
log |x + y√D| = (log |n|)/2 + r ≤ (log |n|)/2 【アア】
とできる。いずれにしても、組み合わせる2個の不等式は【ア】&【イイ】か、または【アア】&【イ】のどちらか。つまり、どっちにしても【ア】【イ】のどちらか一方(どちらかは確定できないが、とにかくどちらか一方)から +1/2 の項を消せる。この一見微妙な「節約」によって、最終的には2017年版の約半分まで上限を減らせる。検索速度的にはざっと2倍の高速化なので、この工夫は有意義である。

【7】 しかし数値的に検証すると、こうして得られる改良版も、もともとの2017年版より良いのは確かだが、まだ最善の評価とは言い難い。成功するかどうかはともかく、さらなる研究の余地がある。

拡張ペル方程式を解くことに関しては、このようなブルートフォースより良いアルゴリズムが存在する。だからこそ「ブルートフォースの上界なんてどうでもいい。ブルートフォースそのものが必要ない」ということになって、この上界が真剣に検討されていないのだろう(もし仮にこれが数学的に重要と見なされ、専門家が総力を挙げれば、それほど難しい問題ではないはず)。けれど「拡張ペル方程式の解の分布を幾何学的に解釈したときに、解があるなら、必ずこのタイルの中に1個はある」とか「本質的に異なる全部の解を含む最小のタイルはこれ」みたいな、幾何学的な数論の文脈においては、こういう一見「古くさい」問題も、新しい意味を持つかもしれない。

2020-10-31 コンラッドの不等式(メモ3) 2020年7月版までの簡単化について

メモ2の内容は、まだ粗削りだが、本質的には、これでうまくいくと思われる。説明が必要なのは【4】の根拠だが、これは特殊な主張ではなく、7行くらいで初等的に証明できる。

心理的に一番問題なのは「なぜいきなり対数関数が出てくるのか」という動機付けだろう。必然性が感じられない証明の進め方は、いくら論理的に正しくても、キツネにつままれたような気分になり、心理的にすっきりしないものである。一夜漬けの試験対策とか、とにかく先に進みたいとか、そういう場合ならいいとしても、趣味として(レクリエーションとして、それ自体が楽しいということから…要するに遊びで)考えている場合、もやもやが残るのは良くない。実例を示しながら【4】を少し丁寧に考え「u を底にする対数関数を使うのは、理にかなっている」ことをハッキリさせたい。u^N を考えて、その N を使いたいのだから log_u が出てくるのは当たり前のはずだが、そこをきちんとやらずに天下り的に log_u を使うのは感心しない。

内容全体は同じでも、順序を工夫して【4】の後半から話を始めれば、いいのかも。

2020年7月末、コロンブスの卵のような小さなアイデアに基づき、コンラッドの上界を約半分まで改善した(結果が最善かは疑問だが、劇的な改善だったことには違いない)。9月末には、証明を簡単化するアイデアの手掛かりも得られ、今、10月末、「対数関数以外は中学数学の範囲」というところまで持ってくるプロットができた。直接的に何かに役立つわけではないが、こういうことが好きな少数派がワクワクするような、きちんとした記事にまとめられればうれしいし、時間の都合等でそれが実現できないとしても、メモ2だけで、既に粗筋は分かるだろう。論理的には「ペル方程式は必ず解を持つ」こと、つまり非自明な単数の存在そのものも証明する必要があるが、その証明は、この話題を扱ったほとんどの教科書に載っている。簡潔ではないが、内容は難しくない。

2020-11-03 コンラッドの不等式(メモ4) 再々改良2020年11月版なるか?

メモ2の末尾【7】に記したように、今の上界はまだ完成形ではない。今の検索範囲だと、本質的に同じものが2回検出されることがあり(冗長検出)、検索範囲が最適化されていない。「じゃあ最適化できるの?」というのは別問題で、そこがもやもや…。

2017年の元祖コンラッド版は:
x^2 − d*y^2 = n が整数解を持つなら、少なくとも一つの解 (x,y) が次の範囲にある…
|x| ≤ sqrt(|n|u)
|y| ≤ sqrt(|n|u) / sqrt(d)
…というものだった。2020年7月の改良版では、この範囲を
|x| ≤ sqrt(|n|)*( sqrt(u) + 1 ) / 2
|y| ≤ sqrt(|n|)*( sqrt(u) + 1 ) / (2 * sqrt(d))
まで狭くした。ここまでは良かった。

10月の「再改良版」では、これをさらに
|x| ≤ sqrt(|n|)*( sqrt(u) + 1/sqrt(u) ) / 2
|y| ≤ sqrt(|n|)*( sqrt(u) + 1/sqrt(u) ) / (2 * sqrt(d))
にできると主張したが、証明に初歩的なミスがあり、撤回。しかし「証明が間違っている」ということは「命題が間違っている」ということではない。x の方の式は駄目かもしれないが、y の方の不等式は事実として正しいばかりか、さらにこれを改良して
|y| ≤ sqrt(|n|)*( sqrt(u) − 1/sqrt(u) ) / (2 * sqrt(d))
にできるかも。一度失敗しているだけに、100パーセントできる、とは断言できないが…。

ところで、メモ2の q+r, q−r は、どちらも「解に対応する対数」なのだから、一般性を失うことなく、r は負でないと仮定できる。r が負だった場合、−r をあらためて r と書けばいい。よって【アア】と【イイ】の場合分けをするまでもなく、常に
a = log |x + y√D| = q + r = (log |n|)/2 + r ≤ (log |n|)/2 + 1/2
b = log |x − y√D| = q − r = (log |n|)/2 − r ≤ (log |n|)/2
が成立(r の符号を入れ替えた場合、もともとの −y をあらためて y と置いたことになる)。

…これは単に「既知の事実についての記述の簡単化」にすぎず、上界(定理の内容)の改良ではない。けれど、この「考え方のパターン」が、問題を整理して前進するためのヒントを含んでいるかもしれない。

2020-11-04 コンラッドの不等式(メモ5) 再々改良版、最善なのか?

10月の「再改良版」(下記)は、証明が間違っていたが、結局、正しい証明が存在しそう…。主張そのものはやはり合っていた可能性が高い(確定ではない)。
|x| ≤ sqrt(|n|)*( sqrt(u) + 1/sqrt(u) ) / 2
|y| ≤ sqrt(|n|)*( sqrt(u) + 1/sqrt(u) ) / (2 * sqrt(d))
本日、再々改良版が見えた。x については上記の通りだが、y についてさらに強く
|y| ≤ sqrt(|n|)*( sqrt(u) − 1/sqrt(u) ) / (2 * sqrt(d))
が成立すると思われる

さらに(事実とすれば、この点が重大なのだが)「これがギリギリの最善。一般のケースにおいて、これより強く押さえることはできない」と予想している。

y の上界については、引き続き「中学数学+対数」だけで証明できる(もちろん間違ってる可能性はある)。

上記の x の上界の証明については、残念ながら、今のところ微分を使っている。「気軽に・簡単に」がモットーなので「こんなところでわざわざ解析など使わず、直接証明できないのか」という感じだが、道が見えない。

当面の課題は、現在のオフィシャルなコンラッドの不等式(7月の改良版)と、上記の再々改良版の間の差(隙間)の部分を数値的に検討すること。「7月の改良版が最適でないこと、冗長検出が起きること」は、既に分かっている。考えていることが合ってるとすれば、「再々改良版では検出されないが、7月版では検出されてしまう解」は、全て冗長のはず。万一、冗長でないものがこの隙間に存在するケースがあれば、再々改良版が間違っていることになる。そのような「明らかな反例」の有無を確認したい。

2017年 コンラッドの定理
2020年7月26日 改良成功(コンラッド自身のテキストにも反映された)
2020年7月30日 再改良できそうな気がした
2020年9月 (説明について)簡単化のアイデア(中学数学+対数関数だけで証明)
2020年10月 (内容について)再改良の試み→失敗! 証明が間違っていた。数値的には正しい方向だと感じられた
2020年10月 (説明について)簡単化の実装(メモ2に書いた粗筋)
2020年11月3日 (内容について)yの評価を再々改良?→今度こそ成功してほしいが
2020年11月4日 (内容について)xの評価を再々改良?(上界は10月と同じ。証明を全面改訂) ←今ここ

2020-11-05 コンラッドの不等式(メモ6) 10月再改良版=正しそう/再々改良版=駄目

10月の「再改良版」(下記)は、結局正しそう。
|x| ≤ sqrt(|n|)*( sqrt(u) + 1/sqrt(u) ) / 2 【正しそう】
|y| ≤ sqrt(|n|)*( sqrt(u) + 1/sqrt(u) ) / (2 * sqrt(d)) 【正しそう】
一方、昨日のメモ5にある
|y| ≤ sqrt(|n|)*( sqrt(u) − 1/sqrt(u) ) / (2 * sqrt(d)) 【駄目】
は、一般には、正しくない。反例が容易に見つかる。

2017年 コンラッドの定理
2020年7月26日 改良成功(コンラッド自身のテキストにも反映された)
2020年7月30日 再改良できそうな気がした
2020年9月 (説明について)簡単化のアイデア(中学数学+対数関数だけで証明)
2020年10月 (内容について)再改良の試み→失敗! 証明が間違っていた。数値的には正しい方向だと感じられた
2020年10月 (説明について)簡単化の実装(メモ2に書いた粗筋)
2020年11月3日 (内容について)yの評価を再々改良?→今度こそ成功してほしいが ←やっぱり失敗!
2020年11月4日 (内容について)xについて10月版の正しい(?)証明
2020年11月5日 (内容について)yについて10月版の正しい(?)証明 ←今ここ

「10月の再改良版は、証明が間違っていただけで、主張は正しい」と思われる。既に正しい(?)証明らしきものが得られた。既に2回失敗したので「また間違ってるかも?」…予備的検証として、d ≤ 100, |n| ≤ 30 の範囲をざっと調べたら「改良版と再改良版の隙間に9件ほどヒットするが、それらは全部冗長」のようであり、とりあえず有利な状況証拠。【駄目】不等式は、数値的に検証するとすぐ反例が見つかる。条件を追加すれば成立するのだろう。

もう一つ考えるべきこととして「10月の再改良版なら、冗長検出は起きない?」…現在の主張は「隙間にあるものは全部冗長」ということを含意するが「隙間より下では冗長検出が起きない」という意味にはならない。xについては、今の手法ではこれ以上、強く押さえられない。「これ以上強くできない=これで必要十分ピッタリになってほしい」…そう予定調和的にいくのか? yについては「一定条件で、より強い【駄目】不等式が正しくなる」=「場合分けによって、もっと強く押さえられる可能性あり」。

2020-11-06 コンラッドの不等式(メモ7) 再改良版の数値的検証

まだチェックが十分でないが、d ≤ 1000, |n| ≤ 1000 において、y について、再改良版は正しいようだ(=「隙間」における検出は全て冗長)。有利な状況証拠が拡大した。

一点だけ、d = 661, n = 661 は要注意。検算不十分だが、再改良版の上界は、
|y| ≤ 2865454435422583218.00000000000000000017449239... (☆)
のはず。計算精度によっては右辺が Y = 2865454435422583218 よりわずかに小さい数に見えて、Y が「隙間」の中にあると誤認される。ところが
73670605055885304205^2 − 661*2865454435422583218^2 = 661 (★)
は多分、冗長ではない。上記の誤認に基づくと「隙間の中に冗長でないものがある」=「再改良版の反例」となるが、実際には Y は(☆)の範囲をはみ出ていない。つまり(★)は「隙間」の解ではない。

ちなみに(★)の各項は661で割り切れ、負のペル方程式になる。
2865454435422583218^2 − 661*111453260296346905^2 = −1
これは d=661 における最小解(?)なので、上の式を661倍した(★)は n = 661 に関して冗長ではないはず。

ところで「再改良版の不等式で区切られる領域内では、冗長にならない?」ということは、論理的には別の問題だが、不等式の証明と関連して、次のように考えることができる。冗長ということは、大ざっぱに言えば q+r の r の絶対値が1/2を超えてしまう状態。絶対値が 1/2 を超えないように r を選択できること(これは確実)がわれわれの不等式の根拠になっているが、逆に「この不等式が成り立てば r の絶対値が 1/2 を超えない」と言えるのなら、不等式が示す範囲内(r=1/2のケースはひとまず度外視する)で冗長検出は起きない。理由は次の通り。「本質的に同じ解」に対応する r は1刻みでしか変動できない。一方、
区間 (−1/2,1/2]
に複数個の r が検出された場合、どの二つをとっても、それらの距離は 1 より小さい。「本質的に同じ解」に対応する r は1間隔で並ぶのだから、1より小さい距離内に「本質的に同じ解」に対応する2個の r はない。ただし、本質的に同じ
r = −1/2, r = 1/2
が2重に検出されてしまう可能性(上記で度外視したケース)については、別途考える必要がある。

2020-11-25 コンラッドの不等式(メモ8)

「コンラッドの不等式の意味とすごさを普通の中高生にも分かるように説明しちゃうぞっ!」プロジェクト、ひそかに準備中。2020年9月28日10月30日に「線型独立・ベクトルの計算が要らない証明」の粗筋を考えたが、さらなる簡単化として、説明ではまず n が正の場合に限定するのがいいかもしれない。そうすると、自動的に x + y√D と x − y√D が両方正と仮定できるようになり、ゴチャゴチャした絶対値の処理が不要になって見通しがいい。その上、自動的に r が正になるので、いきなり「改良版」に持っていける。その道筋が分かってから、今度は n が負の場合に進んだ方が、なだらかだろう。

2020-11-29 コンラッドの不等式(メモ9) n が正だと絶対値記号を消せる訳

【1】 (x,y) を拡張ペル方程式 x^2 − Dy^2 = n の任意の解(|n| ≥ 2)とすると (±x,±y) の4組はどれも解。とりあえず符号はどうでもいいので、x, y はどちらも負でないと仮定。すると
|x + y√D| ≥ |x − y√D| であり、
a = log |x + y√D| と b = log |x − y√D| について a ≥ b が成り立って、
r = (a−b)/2 ≥ 0。
一方、q = (a+b)/2 は、次の理由により、n のみにより決まる定数。
2q = log |x + y√D| + log |x − y√D| = log (|x + y√D|⋅|x − y√D|)
= log |x^2 − Dy^2| = log |n|

【2】 このとき x + y√D > 0 だが(x と y は同時に 0 にはならない)、
(x + y√D)(x − y√D) = x^2 − Dy^2 = n なので、もし n が正なら、
x − y√D = n / (x + y√D) も正。この状況では(つまり n が正の場合には)、【1】の全ての絶対値記号を除去できるはず(絶対値記号の中身は全部正なので)。実際上 x, y がどちらも負でない…と仮定して何も問題ないはずだが、証明を進める上で (x,y) を任意の一つの解とした場合、それらが(両方正だとしても)最小ではない正の解だとすると、以下の方法では最小の正の解に還元できない可能性がある。一方、上記と同様の議論により、少なくとも
「n が正のとき、x + y√D が正なら、x − y√D も正」
とは言える。たとえ y が負だとしても x が十分大きい正の値を持ち x + y√D が正なら、この点に関しては、それで足りる。

【3】 さて、対応するペル方程式 x^2 − Dy^2 = 1 の最小の正の解を (s,t) として、u = s + t√D と置く。拡張ペル方程式の基本性質により:
「x ± y√D が解を表すとき、任意の整数 k について
X ± Y√D = (x ± y√D)u±k [複号同順]
は、どれも同じ方程式の異なる解を表す。」…みたいなことが言える(この部分は証明が必要)。
そんなこんなで、【1】の log の底を u とすると、
a = log |x + y√D|
b = log |x − y√D|
が解に対応する対数なら、A = a+k, B = b−k もまた解に対応する対数…みたいなことが言える。【1】で見たように q は固定されているが、r については、解の種類に応じて
r = (A−B)/2 = ((a+k)−(b−k))/2 = (a−b)/2 + k
となり、最初の拡張ペル方程式の解を選び直すことによって、r に任意の整数 k を足すことができる(説明は少々いいかげんだが、この結論は正しい)。つまり、この系列の解たちに対応して、r が取り得る値は、数直線上において間隔1で並んでいる。従って、必ずそのどれか一つは区間 (−1/2,1/2] に入る。そのような r に対応している解 (X,Y) を選択することによって
|r| ≤ 1/2
を保証できる。このとき、もし X, Y がどちらも負でないなら、【1】の考察により
0 ≤ r ≤ 1/2
となる。このように、ここでうまく絶対値記号を外せるなら話が早いのだが、それが面倒(あるいは不可能)なら、単に r が負のケースを分けて議論した方が手っ取り早い。

ここまで来れば、2020年7月版までのコンラッドの不等式は容易に得られる。幾何学的には q は a と b の中点(平均値)。q を中心に半径 |r| の円を描くと、それは a, b と交わる。

2020-11-30 コンラッドの不等式(メモ10) n が正なら(リトライ)

平方数でない正の整数 D と正の整数 n について、x^2 − Dy^2 = n の整数解 (x,y) があったとする。x, y はどちらも負でないと仮定。
不等式 x^2 > x^2 − n = Dy^2 の両辺を D で割って平方根を取ると
x/√D > y つまり x > y√D。だから x − y√D は正で、次の関係が成り立つ。
x + y√D ≥ x − y√D > 0

2個の実数 α = log (x + y√D) と β = log (x − y√D) について α ≥ β が成立。実数 γ = (α+β)/2 はそれらの中点(平均値)に当たるが、(x,y) の値と無関係に n のみにより定まり、 (log n)/ 2 に等しい。なぜなら:
2γ = log (x + y√D) + log (x − y√D) = log ((x + y√D)(x − y√D))
= log (x^2 − Dy^2) = log n

中点 γ から α ないし β までの距離 δ は、もちろん「α と β の距離」の半分:
δ = (α−β)/2 ≥ 0 [仮定により α ≥ β なので δ は負ではない]

よって n が正のケースに限ると、絶対値記号が絡まない議論が可能。(メモ9は、絶対値記号を消せることの説明としてはピンボケだった。)

解 (x,y) を表す実数 x + y√D と、別の解 (x′,y′) を表す実数 x′ + y′√D が単数倍の違いのとき、それらの解は同値と見なされる。2種類の解が本質的に同じというのは、それより広い範囲の対象を一つにまとめる考え方であり、符号の違い (±x,±y) も無視する。すなわち、同値である場合は「本質的に同じ」だが、それに加えて
x + y√D と x − y√D については、同値であっても・なくても「本質的に同じ」と考える。対数の底をメモ9のようにした場合、上記の δ に関連して:
・ある一つの δ ∈ [0,1/2] について「±δ + 整数」に対応する解たちは、全部本質的に同じ。
・そのような解たちのグループは、存在しないことも、1種類だけ存在することも、2種類以上存在することもある。
・拡張ペル方程式の任意の解は、このようにして定まるグループのどれか一つだけに、必ず所属する。
・上記の同値関係でいえば、一般の場合、δ に対応する解たちと、−δ に対応する解たちは同値ではない。特別な場合として、δ = 0 または 1/2 のときに限って、両者は同値。

古典理論では「互いに素」がどうこうという細かい条件が付くが、上記の方法を使うと、その条件を取っ払って、解をクリアカットに分類できる。例えば
x^2 − 61y^2 = 900 について「本質的に異なる14種類の整数解がある」というのは、この意味。14種の内訳は、一般の場合13、特別な場合1、従って同値類でいえば27個。

[1] : (x,y) = (30,0) : x^2-61*y^2=900 : delta=0.000000 : gcd(x,y)=30
[2] : (x,y) = (31,1) : x^2-61*y^2=900 : delta=0.011712 : gcd(x,y)=1
[3] : (x,y) = (91,11) : x^2-61*y^2=900 : delta=0.080711 : gcd(x,y)=1
[4] : (x,y) = (213,27) : x^2-61*y^2=900 : delta=0.120455 : gcd(x,y)=3
[5] : (x,y) = (275,35) : x^2-61*y^2=900 : delta=0.132167 : gcd(x,y)=5
[6] : (x,y) = (1250,160) : x^2-61*y^2=900 : delta=0.201166 : gcd(x,y)=10
[7] : (x,y) = (1617,207) : x^2-61*y^2=900 : delta=0.212878 : gcd(x,y)=3
[8] : (x,y) = (3874,496) : x^2-61*y^2=900 : delta=0.252622 : gcd(x,y)=2
[9] : (x,y) = (17659,2261) : x^2-61*y^2=900 : delta=0.321622 : gcd(x,y)=1
[10] : (x,y) = (22845,2925) : x^2-61*y^2=900 : delta=0.333333 : gcd(x,y)=15
[11] : (x,y) = (29554,3784) : x^2-61*y^2=900 : delta=0.345045 : gcd(x,y)=2
[12] : (x,y) = (134719,17249) : x^2-61*y^2=900 : delta=0.414044 : gcd(x,y)=1
[13] : (x,y) = (322782,41328) : x^2-61*y^2=900 : delta=0.453789 : gcd(x,y)=6
[14] : (x,y) = (417575,53465) : x^2-61*y^2=900 : delta=0.465500 : gcd(x,y)=5
[15] : (x,y) = (30,0) : x^2-61*y^2=900 : delta=0.000000 : gcd(x,y)=30
[16] : (x,y) = (31,-1) : x^2-61*y^2=900 : delta=-0.011712 : gcd(x,y)=1
[17] : (x,y) = (91,-11) : x^2-61*y^2=900 : delta=-0.080711 : gcd(x,y)=1
[18] : (x,y) = (213,-27) : x^2-61*y^2=900 : delta=-0.120455 : gcd(x,y)=3
[19] : (x,y) = (275,-35) : x^2-61*y^2=900 : delta=-0.132167 : gcd(x,y)=5
[20] : (x,y) = (1250,-160) : x^2-61*y^2=900 : delta=-0.201166 : gcd(x,y)=10
[21] : (x,y) = (1617,-207) : x^2-61*y^2=900 : delta=-0.212878 : gcd(x,y)=3
[22] : (x,y) = (3874,-496) : x^2-61*y^2=900 : delta=-0.252622 : gcd(x,y)=2
[23] : (x,y) = (17659,-2261) : x^2-61*y^2=900 : delta=-0.321622 : gcd(x,y)=1
[24] : (x,y) = (22845,-2925) : x^2-61*y^2=900 : delta=-0.333333 : gcd(x,y)=15
[25] : (x,y) = (29554,-3784) : x^2-61*y^2=900 : delta=-0.345045 : gcd(x,y)=2
[26] : (x,y) = (134719,-17249) : x^2-61*y^2=900 : delta=-0.414044 : gcd(x,y)=1
[27] : (x,y) = (322782,-41328) : x^2-61*y^2=900 : delta=-0.453789 : gcd(x,y)=6
[28] : (x,y) = (417575,-53465) : x^2-61*y^2=900 : delta=-0.465500 : gcd(x,y)=5

[15][16][17]…は、それぞれ[1][2][3]…の (x,y) を (x,−y) に置き換えたもの。符号の違いを無視するなら、14番目までが本質的に異なる。符号の違いを考えても、[15] は [1] と全く同じ式なのでカウントから除外され、全体では27種。もちろん x, y 両方の符号を逆にしたものも解なので、それらもいちいちカウントするなら54種だが、この数え方は「解を表す実数の −1 倍」も別カウントすることに当たる。−1 は単数(1の約数)であり、「単数倍の違いなら同値」という定義上、同値なので、別カウントする必要ない。他方、例えば [16] は [2] と本質的に同じだが、対応する実数で考えると [2] の単数倍ではないので、同値ではない。言い換えると、
[0,1/2] の範囲での δ の違いが「本質的な違い」、
(−1/2,1/2] の範囲での δ の違いが「同値類としての違い」。

2020-12-05 コンラッドの不等式(メモ11) たぶん

【1】 x^2 − Dy^2 = n の整数解 (x,y)。x は負でないと仮定、yは負でもいい。
(x + y√D) と (x − y√D) について。明らかに、少なくとも一方は正。
(x + y√D)(x − y√D) = x^2 − Dy^2 = n が正なら、他方も正。

【2】 yが負なら−yをあらためてyと置く。必要なら x と y を下記のように選び直すことにより
log(x + y√D) と log(x − y√D) の距離を1以下にできる。距離が1より大きいなら、こうする。
(x + y√D)/ε をあらためて (x + y√D) と置き、(x − y√D)ε をあらためて (x − y√D) と置くと、
log(x + y√D) − log(x − y√D)
は2減少。ここで ε = s + t√D は対応するペル方程式の最小の正の解に当たり(ノルム1の単数)、ここで考えているlogの底。最初の距離が偶数台なら、これを繰り返すと、差は0以上1未満になる。最初の距離がちょうど奇数なら、これを繰り返すと、差はちょうど1になる。最初の距離が奇数台の非整数の場合、どこかで差が (1,2) の範囲になる。もう1回だけ2減少させると、差は (−1,0) になる。このとき距離は1未満だが、yが負になっているので、−yをあらためてyと置く。

【3】 どの場合でも
α = log(x + y√D), β = log(x − y√D) は 0 ≤ (α−β) ≤ 1 を満たす。

2020-12-08 コンラッドの不等式(メモ12) 対数を使わない証明

もともと数学専攻・学部2~3年以上を対象としたような内容。普通の中学生に説明するには、二次体の整数論は平易に言い換えるとして「ベクトル・線型独立・対数関数」をどうするか。「ベクトル・線型独立」を使わないようにするアイデアはあったが、対数関数は導入するしかないと思っていた。しかし、試行錯誤の末、どうやら対数関数を使わない証明の道筋が見つかった。λ = log(x + y√D) と μ = log(x − y√D) の算術平均を γ として半径 δ の円を描く…という部分を「α = x + y√D と β = x − y√D の幾何平均を γ として…」とやればいい。分かってみれば単純明快。

対数を使えば、淡々とできるのだが、中学生向けの記事にしたい!というこだわりから、かなりの縛りプレイになった。一般に、代数的整数論を古典数論の言葉で述べると、見通しが悪くなる。ところが、この場合に関しては、あえてそうすることで、むしろイメージが明確になる面もある。対数関数を導入して、それを使う道もあるが、導入したての対数関数を使うのは、読者にとって実感が湧きにくい。対数関数を使わない方が、一般向けの説明としてはいい。

なぜ中学生向けにこだわったのか…よく分からないが「この証明は中学数学の範囲でスッキリ再構成できる」という漠然とした勘、妙な使命感(?)があった。全体から見れば、拡張ペルの話題のマイナーな命題にすぎないけれど、理論的に重要な意味を持っているように思えるし、発見者が何をどう考えたのか忘れないうちに整理しておくことは、自分自身にとっての覚え書きでもあり、第三者にとっても何かの参考になるかもしれない。アマチュアだって「ちょっとした発見」ができる! プロにとっては、たわいないことでも、そこにはワクワクがある! 教科書をなぞって暗記するのが数学ではなく、実験や遊びがあってもいい。実際、「2020年7月の改良版不等式自体、まだ最善の上界ではない」というのは非常に確からしい。

2020-11-07 コーヒーブレイク 「フェルマーの最終定理」のロマン~失敗は発展のもと

「アマチュアだから」「大して知識がないから」などと余計な遠慮をせず、興味があることは何でも試したらいい。人は何も持たずに裸で生まれ、やがて何も持たずに去っていく。人生なんてゼロから始まりゼロで終わるもの。だったら「最終成果」なんて気にしても仕方なく、生きてる間に「本当の意味で楽しむ」こと…「自分には、それ自体が面白い」…それが必要、それで十分。

フェルマーの最終定理については、多くの方が耳にしたことがあるでしょう。その内容は…

x3 + y3 = z3 を満たす正の整数 x, y, z は存在しない。「3乗」を「4乗」「5乗」「6乗」…に変えても、結論は同じ。

…というもの。一見シンプルな主張。

アマチュアを含めて多くの数学者がこの問題に取り組み(フェルマー自身、職業的な数学者ではなく「アマチュア」だったらしい)、多くの人が何度も何度も失敗しましたが、その過程でいろいろな新しい知見が得られ、数論そのものが大きく発展しました。

最終定理自体は、比較的最近になって、ようやく証明されたようですが、数論の世界には「問題の意味はシンプルなのに、まだよく分かっていないこと」が今でもいっぱい。「プロ棋士ではないから、囲碁・将棋を楽しんではいけない」ということはなく、登山だって、料理だって、ピアノだって…それを好きな人が、趣味として楽しむのは個人の自由。むしろ「アマチュアの立場だからこそ、職業上の責務やプレッシャーと関係なく純粋に楽しめる」という面も。数論も同じこと。

ペル方程式の一般化は、最終定理同様、古くて新しい問題。その最初歩ともいえる「負のペル方程式」…

x2dy2 = −1 に整数解はあるか?

…は、具体的な d が与えられたとき、アルゴリズム的には解決できるのですが、この場合には解がある、という d についての必要十分条件は、今でも完全には分かっていないようです。それを少し拡張した…

x2dy2 = z に整数解はあるか?

…という問題も、具体的な個々の問題を解決するアルゴリズムは昔から知られているものの、全体を見通す理論は未完成。さて「谷山予想」というのは、フェルマーの最終定理の証明とも関係しているものですが、Brian Conrad によって証明されました。そのコンラッドは、2017年、上記の「拡張ペル方程式」に解がある場合、必ず次の範囲に一つは解がある…ということを書きました(これは深い問題ではなく、初等的なものです。ここでは u の意味の説明は省きますが、それは d に応じて定まる数で、一般には大きい値)。

0 ≤ x ≤ √|z| × (√u + √u)/2 = √(|z|u)

2020年7月、非常に簡単な議論によって、上記の
u + √u
の部分を
u + 1
に減らせること(つまり、範囲をざっと半分に絞れること)を筆者は指摘しました。これが「改良版」コンラッドの不等式。2020年10月、これをさらに
u + 1/√u
に減らせる…と主張しました。これが「再改良版」コンラッドの不等式であり、10月の時点では証明に初歩的なミスがあったものの、主張そのものは正しいと筆者は考えています。現在2020年11月の時点では「今度は正しいはず」という証明を得ています。それが勘違いでまた間違っている可能性も、もちろんあるのですが…

核心は「不等式の範囲をもうちょっと絞る」という数値的な「節約」ではなく(数値的にはどちらにしても巨大)、「この範囲を捜索することが必要かつ十分、というシャープな線を引く」という理論的なもの。実用上、ペル方程式の解法では、もっと良いアルゴリズムが知られていますが、この種の不等式は理論的に興味深いものであり、だからこそコンラッドもこれを記述したわけです。実用上も、考えている数が小さいときは、全数検索は手軽で便利。

のみならず、もともとのコンラッドの証明は、学部上級~大学院初級を対象とし、代数的整数論と線型代数を使うものですが、メモ2にあるように高校数学の範囲(中学数学+対数関数だけ)でも証明できる(素人だからこそ意味を持つ工夫かもね)。それは改良版にも有効。再改良版の証明には、今のところ、それプラス微分が必要ですが…。上記は x の範囲に関するものですが、y の範囲についても同様の不等式が成り立ちます。そして y については「再改良版」の
u + 1/√u
を一定条件下で
u − 1/√u
に減らせる…というのが「再々改良版」。これについては、まだよく見通せていませんが、もしかすると、これも理論面で面白い意味を持つのかもしれません。

2020-11-09 数論ごっこ

8で割って5余るような任意の自然数 d について、
【ケ】 X^2 − d*Y^2 = +4 または −4
は「奇数の解」を持つこともあれば、持たないこともある。奇数の自然数解を持つ場合、そのうち最小のものを「基本解」と呼ぶことにしよう。例えば d=45 について
7^2 − 45*1^2 = +4
であり、それより小さい自然数解はないので (X,Y) = (7,1) は基本解。一方 d=37 について【ケ】を満たす整数は
12^2 − 37*2^2 = −4
のように偶数に限られるので、上記の意味での「基本解」は存在しない。1857年のケイリーのノットに、1000以下の d について、基本解の一覧表が載っている。

8で割って5余る d について、具体的な数値例を考えると、どうやら次のことが成り立つようだ。
「X^2 − d*Y^2 = ±4 が奇数解を持つことは、Q(√d) の基本単数 ε = x + yω の y が奇数であることと同値。解があるなら、この y が基本解のY成分。その際、±4 の符号は、ε のノルムの符号に一致する。」

これが事実とすると、基本解のX成分は、X^2 = d*Y^2 ± 4 から自動的に定まる。

基本単数とは何か、どうやってそれが決定されるのか…といった伏線は、そのうち回収したいが、とりあえず http://www.numbertheory.org/php/unit.html で計算してもらえる(Gフリーな良いページ)。PARI では例えば
quadunit(37)
とタイプすると 5 + 2*w が表示される。少なくとも d ≤ 109 の全例について、上記の観察は正しい。以下、基本単数については上記のウェブページから直接コピペ、ケイリーのノットと組み合わせて関係性を色で表す:

the fundamental unit of Q(√5) is ε=x+yω : norm=-1
x=0, y=1 : 1^2-5*1^2=-4
ω=(1+√5)/2

the fundamental unit of Q(√13) is ε=x+yω : norm=-1
x=1, y=1 : 3^2-13*1^2=-4
ω=(1+√13)/2

the fundamental unit of Q(√21) is ε=x+yω : norm=+1
x=2, y=1 : 5^2-21*1^2=+4
ω=(1+√21)/2

the fundamental unit of Q(√29) is ε=x+yω : norm=-1
x=2, y=1 : 5^2-29*1^2=-4
ω=(1+√29)/2

the fundamental unit of Q(√37) is ε=x+yω : norm=-1
x=5, y=2 : 偶数だから X^2-37*Y^2=±4 は基本解なし!
ω=(1+√37)/2

d=45 is divisible by 3^2
あらまあ…平方因子があるとエラーになってしまうので、これはPARIで…
 quadunit(45) is ε=x+yω : norm=+1
 x=3, y=1 : 7^2-45*1^2=+4
 ω=(1+√45)/2

the fundamental unit of Q(√53) is ε=x+yω : norm=-1
x=3, y=1 : 7^2-53*1^2=-4
ω=(1+√53)/2

the fundamental unit of Q(√61) is ε=x+yω : norm=-1
x=17, y=5 : 39^2-61*5^2=-4
ω=(1+√61)/2

the fundamental unit of Q(√69) is ε=x+yω : norm=+1
x=11, y=3 : 25^2-69*3^2=+4
ω=(1+√69)/2

the fundamental unit of Q(√77) is ε=x+yω : norm=+1
x=4, y=1 : 9^2-77*1^2=+4
ω=(1+√77)/2

the fundamental unit of Q(√85) is ε=x+yω : norm=-1
x=4, y=1 : 9^2-85*1^2=-4
ω=(1+√85)/2

the fundamental unit of Q(√93) is ε=x+yω : norm=+1
x=13, y=3 : 29^2-93*3^2=+4
ω=(1+√93)/2

the fundamental unit of Q(√101) is ε=x+yω : norm=-1
x=9, y=2 : 偶数だから X^2-101*Y^2=±4 は基本解なし!
ω=(1+√101)/2

the fundamental unit of Q(√109) is ε=x+yω : norm=-1
x=118, y=25 : 261^2-109*25^2=-4
ω=(1+√109)/2

右辺が 4 の拡張ペル方程式と、二次体の整数論の関係は基本的なことで、別に神秘的なことではないはずだが、こうして結果だけ眺めると、やっぱり数の不思議さ・奥深さのようなものを感じる。

注: 上記の数値例だけ見ると、偶数の y は常に y=2 のようにも思えるが、それは正しくない。例えば d=269 の場合:

the fundamental unit of Q(√269) is x+yω
x=77, y=10
ω=(1+√269)/2
norm=-1

2020-11-10 数論ごっこ・訂正

「数論ごっこ」には、
【ケ】 X^2 − d*Y^2 = +4 または −4
整数解を持たないことがある…という間違ったことが書かれていた(既に修正済み)。実際には
【コ】 X^2 − d*Y^2 = +1 または −1
は必ず解を持つので、その解 (X,Y) を2倍すれば自動的に【ケ】の解になる(2倍するので偶数解)。正しい主張は
「方程式【ケ】は、【コ】から作られる解以外の解(要するに奇数解)を持たないことがある」。

こう言い換えると「数論ごっこ」の内容自体は、ほぼ当たり前のようにも思える。でも…

個々のケースについて、一つ一つ基本単数を計算して「これこれなら、それそれ」という結論を出すのは簡単だとしても、全体を見渡して「どういう条件で、基本解があるのか」「基本解があるとして、いつ符号がプラスになり、いつ符号がマイナスになるのか」を統一的にすっきり説明する理論は、あるのか?

【コ】の右辺が −1 の形(負のペル方程式)は、どんな必要十分条件で解を持つのか…といった程度の「単なる2乗の問題」が未解決(個別のケースは連分数展開で分かるが、一般のケースにおいて循環の周期の長さを見通せるような視座が得られていない)。その意味を考えると、未知に対するわくわくと同時に、もどかしい。フェルマーの最終定理(3乗・4乗・5乗…)は、めちゃくちゃ難しいことで有名だが、とりあえず専門家の努力で解決された。ところが【コ】は未解決。つまり「最終定理よりさらに難しい」。一見シンプルな「2乗の問題」が、何でそんなに難しいのか。「最終」が解決しても、まだまだ分からんことだらけ…

「まだ宝の地図が完成していない」「どこを掘ると何が出てくるか分からない」…というのは、楽しいといえば楽しい。

2020-11-18 x2 − 61y2 = 900 のんびり数学

【1】 x2 − 61y2 = 900 【ア】
には、本質的に異なる整数解が14種類もある。

まず 900 = 302 は平方数。y = 0 としてしまえば、与式は x2 = 900 となり (x, y) = (30, 0) は【ア】を満たす。これは自明解、つまらない解。

(x, y) = (31, 1) も【ア】を満たす。実際、312 = 961 なので
312 − 61⋅12 = 961 − 61 = 900

同様に (x, y) = (91, 11) も【ア】の解。

【2】 次に小さい自然数解は、(x, y) = (213, 27) で、確かに
2132 − 61⋅272 = 45369 − 61⋅729 = 900 (★)
となるが、この計算は3の倍数だらけ。「213」も、各桁の数字を足すと 2+1+3 = 6 なので3の倍数。213 = 3⋅71。「暗視カメラ」のような「因数ビジョン」で、(★)の内容を分析してみましょう。
(3⋅71)2 − 61⋅(3⋅9)2 = (32⋅712) − 61⋅(32⋅92) = 32⋅100
どの項も 32 で割り切れるのは一目瞭然。この現象の根源は、(x, y) = (213, 27) が公約数3を持つこと。最初から全体を 32 で割った
x2 − 61y2 = 100 【イ】
を考え、その解 (x, y) を3倍すれば【ア】の解になる。(★)の計算は間違いではないが“約分されていない”というか、ある意味、無駄に大きな数を考えている。具体的に、(★)は
712 − 61⋅92 = 100
の各項を9倍したものに他ならない。

今考えたのは (x, y) の最大公約数が3のケースだった。最大公約数が2のケースや、5のケースも、解があるとすれば同様のことになるだろう。ここで 2, 3, 5 のような数を考えるのは【ア】の右辺が
900 = 22⋅32⋅52
だから。逆に言うと、例えば (x, y) がどちらも7の倍数だとすると、【ア】の左辺は(7の倍数ひく7の倍数なので)7の倍数になり、【ア】の右辺と等しくなる可能性はない。すなわち公約数が7のケースは、あり得ない。

【3】 それでは【ア】を【イ】のように“約分”というか“通分”できるのは(=もっと簡単な式にすぐ変換できるのは)、解の最大公約数が 2, 3, 5 の3パターンだけだろうか? 次のパターンはどうか。
12502 − 61⋅1602 = 900 【ウ】
この解 (x, y) = (1250, 160) が10で割り切れること、つまり【ウ】の各項が 102 = 100 で“通分”できることは明らか。【ウ】の代わりに
1252 − 61⋅162 = 9 【エ】
を見つけて、解を10倍する方が(理屈の上では)話が早い。【ア】を“通分”できるケースは、解の公約数が 2, 3, 5 に限らず、解の公約数の平方が右辺900の約数になっていれば十分であり、また、それが必要でもある(前記7の例から分かるように、それ以外の因子が含まれていると、右辺が900になる可能性はないので)。【ウ】は、解の公約数が 2⋅5 = 10 になるケース。同様に、解の公約数が 2⋅3 = 63⋅5 = 15 になるケースも、存在するとすれば、同様に考えることができる。さらに、一番最初に考えた自明解 (30, 0) は、解の公約数が 2⋅3⋅5 = 30 のケースに他ならない。【ア】の右辺900の素因数分解は 22⋅32⋅52 なので、“通分”できるパターンは、以上で全て。【ア】には、このような解が10種類も存在する。通分のパターンが7もあるので(これは 2⋅3⋅5 が持つ1以外の約数の個数)、解の種類がそのくらいあっても、おかしくはないだろう。

通分した「小さい」方程式について、試行錯誤で解を見つけることはやればできるが、そうして見つかる解が「本質的に同じ」かどうかという判断は、理論武装がないと難しい(そもそも「本質的に同じ」の意味をまだちゃんと定義していない…)。

【4】 細かいことを気にせず、雰囲気的に話を進める。結局【ア】の解のうち“通分”できないケース…つまり (x, y) が1以外の公約数を持たないケース…が理論上、基本的。【1】にある (x, y) = (31, 1)(x, y) = (91, 11) が、その例。x と y が互いに素なケース、と言い換えることもできる。原始解とか、既約解とか、適当に名前を付けておこう。【ア】には、
(x, y) = (17659, 2261)
(x, y) = (134719, 17249)
という解もある。【ア】について、これら計4種類の原始解が「本質的に異なる」こと、そして「本質的に異なる」原始解はこの4種類だけであること…。このことは、いろいろな角度から考えることができる。まず【ア】では x, y の符号はプラスでもマイナスでもどちらでもいい(2乗してしまうので)。ここでは符号を無視、正の解だけを考えることにする。その上で、まず一番小さい
(x, y) = (31, 1)
を考えると、x = 31y = 1 の31倍だが、この31という数は、次のように mod 900 における61の平方根になっている(61は【ア】における y2 の係数)。
312 = 961 ≡ 61 (mod 900)
これと同様のことが他の原始解についても成立する。
91 ≡ 581⋅11, 5812 ≡ 61 (mod 900) ここで 581 ≡ −319 (mod 900)
17659 ≡ 419⋅2261, 4192 ≡ 61 (mod 900)
134719 ≡ 131⋅17249, 1312 ≡ 61 (mod 900)

すなわち、【ア】の原始解は mod 900 における61の平方根と結び付いている(【ア】の式の形からも、そうなりそうな感じがする)。mod 900 における61の平方根は、±31, ±131, ±319, ±419 の4種類だけなので、本質的に異なる解は最大でも4種類だと予想される。

【5】 この観察は、実は、昔から教科書に記されているような古典的なことなのだが、現代でもよく分かっていない部分が残っている。まず【ア】のような形の不定方程式が解を持つ場合、今見たように平方剰余が絡むことが必要で、そこが平方非剰余だったら解があり得ないことは容易に示される。だが、その条件では十分ではない。「非剰余なら解なし」「解があれば平方剰余」とまでは簡単に断言できるのに、逆に「平方剰余なら解がある」とは限らず、何かもっと深い問題が絡んでいる…。

それとは別の話として「この範囲を探せば、本質的に異なる全ての解が見つかる」という範囲指定ができるのだが、その範囲は現状、必要十分ちょうどぴったりではなく「十分過ぎる」。結果として、本質的に同じ別の解が重複検出されるケースがある。筆者はこの範囲指定を「必要十分ぴったりにできる」と考えていて、結果についてかなりの確信を持っているのだが、しょせんは素人考え、客観的には「よく分からない」。しかし対数を使ったある種の表現において、δ とか r とか呼ばれる数が (−1/2, 1/2] の範囲に収まること。そこに問題が帰着される。さらに別の話として、この種の方程式の実用的な解法は、平方根の連分数展開(こちらは古典的話題)。その観点からの謎は、実際に計算しないで、循環の周期を直接的に求められるのか…。さらにさらに別の話として【ア】のような式は、結局2次曲線が整数格子点と交わる場所を探す問題である。

これらいろいろな見方は、必ず深いレベルでは絡み合っているはずで、同じ本質から生じるいろいろな表面的現象を観察している…と予想される。その全体像については、数学のプロにもまだ完全には分かってないらしい。専門家にも分からないことを素人が考えても仕方ないかもしれないが、そこはそれ、具体例を考え、のんびり遊んでみるのも悪くないでしょう。

2020-11-19 x2 − dy2 = n の解の、とある条件 のんびり数学・2

【1】 前回【4】では、具体例について、何となく次のようになってることを観察した。

(観察) x2 − dy2 = n 【サ】
が自然数解 (x, y) = (a, b) を持ち、a, b が互いに素だとすると
a ≡ kb (mod m) 【シ】
を満たす k が 0, 1, 2, …, m−1 の中に一つだけ存在する。ここで m = |n|。このとき
k2 ≡ d (mod m) 【ス】
が成り立つ。

…これをきちんと証明したい。

【2】 まず a, b が互いに素という仮定について。もしそうでないとすると(つまり a, b に2以上の公約数があるとすると)、その公約数で【サ】を「通分」して、もっとシンプルな方程式にできるのだった。もっと簡単にできることをわざわざ複雑に考えることもあるまい。とりあえず、簡単化できない「互いに素」な場合だけを考えよう、というのである。(a, b) は【サ】の解だから
a2 − db2 = n 【セ】
a2 = n + db2 【ソ】
となるが、このとき b, n も互いに素。実際、そうでないとすると、b, n に2以上の公約数 c があって次のように書けることになる…。
b = b′c, n = n′c
…しかし、だとすると【ソ】の右辺は c の倍数になり、それと等しい【ソ】の左辺も c の倍数でなければならない。すると a, b がどちらも c で割り切れる…という事態になり「a, b は互いに素」という前提に反する。従ってそのようなことは起こり得ず、b, n は互いに素であり、b, m も互いに素(m は n の符号をなくしたものなので、倍数・約数の関係に関する限り n と全く同じこと)。

【3】 b, m が互いに素であるというこの制約によって、【シ】が成り立つ。というのも、k が m 種類の値
{0, 1, 2, …, m−1}
を取るとき、kb の値の変化を記録すると、全体として、やはり m 種類の値
{0, 1, 2, …, m−1}
と合同になる。そのことを確かめるために、上記の範囲の k の中に k1 と k2 があって
k1b ≡ k2b (mod m) 【謎】
になってしまった!と仮定してみよう。つまり、m 種類の入力「k」から m 種類の出力「kb」が得られず、ある入力 k1 と別の入力 k2 が同じ出力にマップされてしまった!と仮定してみる。その場合【謎】から
k1b − k2b ≡ 0 (mod m)
(k1 − k2)b ≡ 0 (mod m)
となるが、これは (k1 − k2)b が m の倍数という意味。ところが b, m は互いに素、すなわち b には m の素因数が全く含まれてないのだから、
(k1 − k2)b
が m の倍数だとしたら (k1 − k2) の部分が m の倍数になる必要がある。でも k が取り得る値は上記の通りなので、どのように2個の値を選んでも (k1 − k2) の絶対値が m 以上になるわけない。つまり (k1 − k2) が m の倍数になるとしたら、唯一の可能性は
(k1 − k2) = 0, k1 = k2

0 も確かに m の倍数には違いないが、これは「別々の入力のつもりだった k1 と k2 が、強制的に等しい値になってしまう」という意味である。つまり「別々の入力が同じ出力にマップされてしまう」という【謎】の事態は起こり得ず、m を法として出力が同じ ⇔ 入力が同じ、入力が違う ⇔ 出力も違う。結局、不合同の m 種類の入力は、不合同の m 種類の出力と1対1対応する。このことから【シ】が成立。

【4】 こうして確かめられた【シ】を今度は【セ】の左辺に代入すると、
a2 − db2 ≡ (kb)2 − db2 = b2(k2 − d) (mod m) 【左】
となるが、【セ】の右辺 n は m または −m に等しいのだから
n ≡ 0 (mod m) 【右】
となる。【セ】の左辺・右辺は等しく、等しいものはもちろん合同なので
b2(k2 − d) ≡ 0 (mod m)

ここで【3】と同様に考えると、これは (k2 − d) が m の倍数であること、言い換えれば
k2 − d ≡ 0 (mod m)
を意味する。このことから【ス】が成立。それが、証明したいことだった。 □

【5】 証明を考えると、あまり「のんびり数学」ではないが…まあ、のんびり検討してみるのも良いかと…。数学のスローライフ。

<例> x2 − 13y2 = −17 は、解 (x, y) = (10, 3) を持つ(d = 13, n = −17)。

このとき 10 ≡ 9⋅3 (mod 17)。つまり【シ】において
a = 10, b = 3, k = 9, m = 17
であり、確かに【ス】が成り立つ:
92 ≡ 13 (mod 17)

2020-11-21 x2 − 43y2 = 24 のんびり数学・3

a2 − db2 = n 【タ】
が成り立つなら、当然 a2 − db2 は n の倍数(詳しく言えば、n の1倍)。つまり:
a2 − db2 ≡ 0 (mod n)
db2 ≡ a2 (mod n) 【チ】
(ここでは n の符号を無視する。例えば n = −17 の場合、mod −17 は mod 17 と同じ意味だと約束する。要するに m = |n| について mod m を考える。)

b の逆数 1/b が存在するという保証があれば、【チ】を次のように変形できる。
d ≡ a2/b2 ≡ (a/b)2 (mod n) 【ツ】

前回・前々回の内容は、大ざっぱに言うと【タ】から【ツ】への変形。この変形を正当化するには 1/b の存在が不可欠であり、そのため「b, n が互いに素であること」に、こだわった。この「互いに素」は、重箱の隅をようじでつつくような、こうるさい限定にも思えるが、そこが肝心。それを逆手に取って 1/b の計算をわざと失敗させることは、楕円曲線法の要(かなめ)でもある。

さて【ツ】の意味は「mod n において、a/b という比(前回それを k と呼んだ)を平方すると d になる」。

【タ】ならば【チ】なので、【チ】が不成立なら【タ】は不成立。特に「互いに素である解」については、【ツ】から、d が平方剰余でなければならない。d が平方非剰余なら、【タ】に「互いに素である解」はない。その場合でも「互いに素でない解」が存在しているかもしれない。

<例> x2 − 43y2 = 24 は、解を持つだろうか。「互いに素である解」が存在するためには、43 ≡ 19 (mod 24) が平方剰余であること(つまり k2 ≡ 19 (mod 24) を満たす k が存在すること)が必要。この必要条件が満たされないので「互いに素である解」はない。けれど「互いに素」という限定を外すと、
(x, y) = (14, 2)
のような解が見つかる。実際、
72 − 43⋅12 = 6
…の全部の項を4倍すると:
142 − 43⋅22 = 24

a = 14, b = 2, d = 43 は【タ】【チ】を満たすが、1/b ≡ 1/2 (mod 24) が存在しないので【ツ】の方向には変形できない。さてはて、どうしましょう…

❋

2020-11-25 何で 14/2 が7じゃねーんだよ!! なんとかしろよ、お前ら ☡

前回、末尾の例で「a = 14, b = 2, d = 43 は【タ】【チ】を満たすが、1/b ≡ 1/2 (mod 24) が存在しないので【ツ】の方向には変形できない」みたいなことを書いたが、「逆算すれば 7⋅2 ≡ 14 (mod 24) なんだから数学的に見ても a/b は7だろ。あ゙ぁ?」という苦情が来るかもしれない。もっともな疑問であり、すっきりさせる価値がある話題だろう。

2020-04-11 「マイナスかけるマイナスはプラス」にならない例

どちらの例も内容は当たり前だが、「マイナスかけるマイナスはプラスに決まってる」と簡単には言い切れないことが分かる。

「マイナスかけるマイナスはプラスということは、分配法則から言えること」という「知識」を持っている人もいるかもしれない。それも突っ込みどころがあって、例えば、整数において「マイナスかけるマイナスはプラス」「プラスかけるプラスはマイナス」としても分配法則は成り立つ。

「マイナスかけるマイナスはプラス」を少しきちんと言い直すと「任意の2元 a, b の積は、a の加法逆元と b の加法逆元の積に等しい」。この明確化によって、上記の紛れは解消する。とはいえ、明確化された命題が成り立つかどうかは、依然として「考えている代数系の性質」であり、「積という演算そのものの性質」ではない。

「マイナスかけるマイナスはプラス」ということについては、次のような「一見エレガントな証明」が成り立つ。下記二つの主張に基づく。

第一の主張 m というものは、m と足し合わせるとゼロになるような数のことである…と定義しよう。例えば −3 というものは、3 と足し合わせるとゼロになるような数である。これは定義なのでケチのつけようがない。

第二の主張 m(−1) × m に等しい。例えば −3(−1) × 3 に等しい。これも明らかだろう。

ここで m をマイナスの数、例えば −4 だとしよう。第一の主張から、−(−4) は「−4 と足し合わせるとゼロになるような数」なので、+4 に他ならない。すなわち
−(−4) = +4
である。一方、第二の主張から
−(−4) = (−1) × (−4)
であり、これらを組み合わせると
(−1) × (−4) = +4
となる。マイナスかけるマイナスがプラスになることが「証明」された…。

この「証明」の問題点は、第二の主張が成立する根拠が示されていないこと。普通の数(例えば実数の集合)の計算では、事実として、第二の主張は成り立つ。しかし、第二の主張が成り立つ理由は、負数の乗法が「このように」定義されていること。定義の結果である第二の主張を使って定義を正当化するのは、循環論法である。

子どもに説明するような場合には、時間軸のプラス(未来)とマイナス(過去)について、「速度がマイナスの(バックしている)車の位置」をイメージするのが手っ取り早い。位置が速度かける経過時間であること、バックしている車の過去の位置がプラスであることは、直観的に明らかだろう。

2020-06-27 現金でちょうど50円払う方法は37通り

1円、5円、10円、50円という通貨があるとする。ちょうど50円を払う方法は何通りあるか。1円を50個、1円を45個・5円を1個…といった全ての可能性を考える。

50円を1個という単純な方法(1通り)の他に、下記のように
11 + 9 + 7 + 5 + 3 + 1 = (11+1) + (9+3) + (7+5) = 12*3 = 36
通りの方法がある。一見たわいもない算数だが、通貨の種類と支払う額を一般化した場合(例: 63円、84円、94円、100円の切手を組み合わせてちょうど1万円払う方法は何通りあるか)、解けることは解けるものの、計算量的に困難。計算法(アルゴリズムの実装)もいろいろで、興味深い。この問題の有名なバージョンは「1セント、5セント、10セント、25セント、50セント、1ドルを使って1ドル払う方法」。50円バージョンは37通り、1ドルバージョンは293通りと、どちらも答えが素数になるところが、誘惑的。

  1 : [ 10*0 + 5*0 + 50 = 50 ] 10円0枚なら残り50円: 5円は0~10枚=11通り
  2 : [ 10*0 + 5*1 + 45 = 50 ] (不足分は1円で払う。
  3 : [ 10*0 + 5*2 + 40 = 50 ] 1円の枚数は自動的に決まる)
  4 : [ 10*0 + 5*3 + 35 = 50 ]
  5 : [ 10*0 + 5*4 + 30 = 50 ]
  6 : [ 10*0 + 5*5 + 25 = 50 ]
  7 : [ 10*0 + 5*6 + 20 = 50 ]
  8 : [ 10*0 + 5*7 + 15 = 50 ]
  9 : [ 10*0 + 5*8 + 10 = 50 ]
 10 : [ 10*0 + 5*9 + 5 = 50 ]
 11 : [ 10*0 + 5*10 + 0 = 50 ]
 12 : [ 10*1 + 5*0 + 40 = 50 ] 10円1枚なら残り40円: 5円は0~8枚=9通り
 13 : [ 10*1 + 5*1 + 35 = 50 ]
 14 : [ 10*1 + 5*2 + 30 = 50 ]
 15 : [ 10*1 + 5*3 + 25 = 50 ]
 16 : [ 10*1 + 5*4 + 20 = 50 ]
 17 : [ 10*1 + 5*5 + 15 = 50 ]
 18 : [ 10*1 + 5*6 + 10 = 50 ]
 19 : [ 10*1 + 5*7 + 5 = 50 ]
 20 : [ 10*1 + 5*8 + 0 = 50 ]
 21 : [ 10*2 + 5*0 + 30 = 50 ] 10円2枚なら残り30円: 5円は0~6枚=7通り
 22 : [ 10*2 + 5*1 + 25 = 50 ]
 23 : [ 10*2 + 5*2 + 20 = 50 ]
 24 : [ 10*2 + 5*3 + 15 = 50 ]
 25 : [ 10*2 + 5*4 + 10 = 50 ]
 26 : [ 10*2 + 5*5 + 5 = 50 ]
 27 : [ 10*2 + 5*6 + 0 = 50 ]
 28 : [ 10*3 + 5*0 + 20 = 50 ] 10円3枚なら残り20円: 5円は0~4枚=5通り
 29 : [ 10*3 + 5*1 + 15 = 50 ]
 30 : [ 10*3 + 5*2 + 10 = 50 ]
 31 : [ 10*3 + 5*3 + 5 = 50 ]
 32 : [ 10*3 + 5*4 + 0 = 50 ]
 33 : [ 10*4 + 5*0 + 10 = 50 ] 10円4枚なら残り10円: 5円は0~2枚=3通り
 34 : [ 10*4 + 5*1 + 5 = 50 ]
 35 : [ 10*4 + 5*2 + 0 = 50 ]
 36 : [ 10*5 + 5*0 + 0 = 50 ] 10円5枚なら残り0円: 5円は0枚=1通り

このタイプの問題は「危険」。入り口はスイートでエレガントで簡単そうだが、スッキリ解決させようとすると予想外に深く、最初に考えていたことは氷山の一角で、一般の問題が面白くてハマってしまう…
Lectures on Integer Partitions
http://www.math.upenn.edu/%7Ewilf/PIMS/PIMSLectures.pdf

2020-07-15 きれいなパターン

32 + 42 = 52 = 25

102 + 112 + 122 = 132 + 142 = 365

212 + 222 + 232 + 242 = 252 + 262 + 272 = 2030

おいおい、どうなってるんだ、これは???

362 + 372 + 382 + 392 + 402 = 412 + 422 + 432 + 442 = 7230

むむむ…。

552 + 562 + 572 + 592 + 592 + 602 = 612 + 622 + 632 + 642 + 652 = 19855

見えた! 一番左の数、3は1~2の和、10は1~4の和、21は1~6の和、36は1~8の和、55は1~10の和。このパターンで行くと、次は1~12の和、すなわち78がスタートポイントになるはず…

782 + 792 + 802 + 812 + 822 + 832 + 842 = 852 + 862 + 872 + 882 + 892 + 902 = 45955

ごちゃごちゃ計算すれば、三角数がなんちゃら、2乗の和の公式がなんちゃらかんちゃらで、こういう仕組みになるんでしょう。

「5項ピタゴラス」の導出↓

a2 + (a+1)2 + (a+2)2 = b2 + (b+1)2
(2b + 1)2 − 6(a + 1)2 = 3 を含意するので、
題意を満たす x2 − 6y2 = 3 の解を求めればいい。ここで x = 2b + 1, y = a + 1

(3 + 1√6)(5 + 2√6) = 27 + 11√6, b = (27 − 1)/2 = 13, a = 11 − 1 = 10

第2解: (3 + 1√6)(5 + 2√6)2 = 267 + 109√6, b = (267 − 1)/2 = 133, a = 109 − 1 = 108 より
1082 + 1092 + 1102 = 1332 + 1342 = 35645

第3解: (3 + 1√6)(5 + 2√6)3 = 2643 + 1079√6, b = (2643 − 1)/2 = 1321, a = 1079 − 1 = 1078 より
10782 + 10792 + 10802 = 13212 + 13222 = 3492725

「7項ピタゴラス」の導出↓

a2 + (a+1)2 + (a+2)2 + (a+3)2 = b2 + (b+1)2 + (b+2)2
(2a + 3)2 − 3(b + 1)2 = −3 を含意するので、
題意を満たす x2 − 3y2 = −3 の解を求めればいい。ここで x = 2a + 3, y = b + 1

(0 + 1√3)(2 + 1√3)3 = 45 + 26√3, a = (45 − 3)/2 = 21, b = 26 − 1 = 25

第2解: (0 + 1√3)(2 + 1√3)5 = 627 + 362√6, b = (627 − 1)/2 = 313, a = 362 − 1 = 361 より
3122 + 3132 + 3142 + 3152 = 3612 + 3622 + 3632 = 393134


Prime Curios!

2019年7月27日

「キュリオ」(珍品)って何?

「Prime Curios!」のホームページには、最初にこう書かれています。

「Prime Curios!」は、素数に関連する珍しいこと・不思議なこと・トリビアを集めた楽しいコレクションです。立ち止まって、野の花の匂いをかぐこと。珍しいコインを集めること。春の雷雨のとき巻き雲を眺めること…。私はこれまで、そういったことの価値が分からない大勢の人たちに出会いました。昔のことわざで「美は、それを見る人の目の中にある」といいます。私たちの目はどうでしょうか。ぜひ私たちのキュリオを試食してみてください。

コンテンツ・エディター: G. L. Honaker, Jr. / テクニカル・エディター: Chris Caldwell

私たちの目標は、面白い性質や形を持つ一つ一つの素数のコレクション(いわば辞書)を作ることです。あなたは何か、面白い数を知っていますか。他の人が「もっと話を聞きたい」と思うような調子で、あなたのキュリオを一般の人に分かるように説明できますか。もしそうなら、知らせてください。

https://primes.utm.edu/curios/

2019年7月25日

提出したキュリオたち

忘れないうちにメモしておきたい。

最初に提出したキュリオは「フェルマーのクリスマス定理で遊ばせて!」(2018年12月)で書いた「79の不思議」。何となく送ってみた。送信のときメアドを記入するので、採用されたらメールで通知でもくるのかな、と思ってた。実際には何の連絡もないし、ユーザー登録もパスワード認証も何もない。今どきのんきな世界だが、まあ他の素数愛好家になりすます詐欺師もいない(なりすますメリットもない)のだろう。知らないうちに(たぶん提出後、翌日くらいに)採用・掲載されていたらしい。記憶が曖昧だが、2019年1月に送って、2月になってそれに気付いたような。送信した方も、のんきだった。

2番目のキュリオは、4187 についての既存のキュリオと関係がある。後から分かった客観的事実としては「間違いに気付いたから連絡した」という形だが、その時点では「自分の側が何か勘違いしてる?」と疑問に思ってた。「4187は逆数の循環節の長さが素数になるような最小の強擬素数(自明な底を除く)」というネタを送り、コメントとして疑問について尋ねてみたが、反応がなかった。

2019-06-21 擬素数の逆数の循環節の長さ n > 110 と互いに素な整数とする。1/n10 進小数で表し、その循環節の長さを とする。 (I) n が素数であるか、または底 10 のフェルマー擬素数であるときに限って、n ≡ 1 (mod ) が成り立つ。 (II) 底 10 のフェルマー擬素数は、10 以上なら、全てこの合同式を満たす。

【例】 n = 91 とすると、1/n の循環節の長さ = 6n ≡ 1 (mod ) を満たす。ところが n = 91 = 7 × 13 は素数でないから、フェルマー擬素数になるはず。実際、1091 − 1 ≡ 1 (mod 91)。

【証】 10 進小数の場合、n を法として 10 の位数。n が素数なら、小定理により n − 1 の約数だから n − 1 ≡ 0 (mod ) となり (I) の合同式が成立。よく知られているように、逆は不成立。すなわち、フェルマー擬素数も同様の理由から、同じ合同式を満たす。

これだけなら大したことじゃないが、これは話の出発点…

2019-06-24 最小の強擬素数 (正の)合成数 m が与えられたとき、m − 1 = 2sd を満たす整数 s ≥ 0 と奇数 d ≥ 1 が一意的に定まる。次の条件のいずれかを満たす自然数 b を知りたい。

条件 (I)  bd ≡ 1 (mod m)

条件 (II)  e = 2rdbe ≡ −1 (mod m) を満たすような、整数 r ∈ [0, s−1] が存在

もし m が偶数なら、s = 0, d = m − 1 となり、(I) は普通の擬素数(フェルマー擬素数)と全く同じ条件、(II) は意味を持たない。従って m奇数の合成数に限ることにする。このとき、(I) または (II) を満たす数(強擬素数と呼ばれる)は必ず擬素数だが、擬素数は必ずしも強擬素数ではない。普通の擬素数の場合と同様の理由から、b ≡ ±1 (mod m) は「自明な底」。底の検索を [2, m−2] の範囲に限定することができる。

そうすると、b ≥ 2 を固定して「b を底とする最小の強擬素数」を考えることができるのはもちろんだが、底を限定せずに「ある性質を持つ最小の強擬素数」を考えることもできる。例えば、100 以下の自然数のうち、非自明な底に対して強擬素数になり得るものは 25, 49, 65, 85, 91 の5個しかない(容易に全数検索可能)。「底の検索範囲を広げたら、350桁の巨大な(非自明な)底に対して 15 も強擬素数になることが発見された!」といったことは、絶対起きない。従って、例えば「49 は、逆数(の10進展開)が循環小数になる最小の強擬素数である」という命題は(数学的な価値はさておき)論理的に正しい。

「強」ではない普通の擬素数についても同様のことが言えるが、3 のべきを除く全ての奇数の合成数は(非自明な底の)擬素数なので、あまり面白みがない。偶数の擬素数(比較的珍しい)についてなら、何か面白いことが言えるかもしれない。

2019-06-23 どの底の擬素数? (正の)合成数 m が与えられたとき、bm−1 ≡ 1 (mod m) を満たす自然数 b を知りたい。一般性を失うことなく 1 ≤ b ≤ m と仮定できる。実際、任意の整数 x について、整数 k が存在して、上記範囲の b を使って x = km + b と書ける。このとき xb (mod m) であり、二項定理から xm−1 = (km + b)m−1bm−1 (mod m)

従って「与えられた m が擬素数になるような底」をリストアップしたいとき、m より大きい底を考える必要はない。とりあえず m 回の試行で全数検索できる。さらに、合同式 bm−1 ≡ 1 (mod m)b = m ≡ 0 なら常に不成立、b = 1 なら常に成立。これらは「自明な底」である。

b = m − 1 つまり b ≡ −1 のとき、上記の合同式は m が奇数なら成立、偶数なら不成立(偶数 m = 2 に対しては成立するが、m は合成数なので 4 以上)。これも「自明な底」であり、結局、実質的に問題になるのは 2 ≤ b ≤ m − 2 の範囲の b に限られる。

【例】 合成数 m = 9 は、どのような底に対して擬素数か。これは「8 乗して 9 で割ったとき 1 余るような整数をリストアップせよ」という問題。b = 9 ≡ 0 が条件を満たさないこと、b = 1, 8 ≡ ±1 が条件を満たすことは明白。それ以外の底について、素朴に計算すると:

U = 2^8 = 256 ≡ 4
V = 3^8 = 6561 ≡ 0
W = 4^8 = 65536 ≡ 7
w = 5^8 = 390625 ≡ 7
v = 6^8 = 1679616 ≡ 0
u = 7^8 = 5764801 ≡ 4

実際には、この場合、底が偶数乗されるのだから、b > (m − 1)/2 については、m − b ≡ −b に対する結果を再利用できる(u = U, v = V, w = W)。結論として、9 は自明な底 1, 8(およびそれに 9 の倍数を足した自然数)について擬素数だが、9 が擬素数になるような非自明な底は存在しない。m が大きい場合、m − 1 乗をばか正直に計算すると計算途中の値が大きくなり過ぎるが、その点については抜け道がある。

2019-06-27 ラビン・ミラー擬素数の検索 底 2 ≤ b ≤ m − 2 の強擬素数である奇数 m を「ラビン・ミラー擬素数」と呼ぶことにする。ラビン・ミラー擬素数であるかないかだけを知りたいなら、2 ≤ b ≤ (m − 3)/2 の範囲の底を考えれば十分。なぜなら底 b のラビン・ミラー擬素数は底 m − b ≡ −b (mod m) のラビン・ミラー擬素数でもある。

実際、bd ≡ ±1 (mod m)bb に置き換えても成立。これは条件 (I) の全部と条件 (II) の一部であり、≡ −1 は、条件 (II) における r = 0 の場合に当たる。条件 (II) の残りの部分は、r ≥ 1 に対し be ≡ −1 が成立するというものだが、その場合、bb に置き換えても左辺の値は変わらない(e は偶数なので)。

【例1】 n = 121 なら d = 15b = 3 に対して bd ≡ 1 (mod n) であり、bb に置き換えれば、d は奇数なので右辺は ≡ −1。すなわち、底 b ≡ ±3 の両方に対して 121 はラビン・ミラー擬素数。

【例2】 n = 125 なら d = 31b = 57, r = 1, e = 62 に対して be ≡ −1 (mod n) であり、bb に置き換えても、e は偶数なので結果は変わらない。

2019-06-29 4187という数 The Prime Pages の「素数の珍品」(Prime Curios!)コーナーには、ちょっと前まで次の記述があった。4187 is the smallest Rabin-Miller pseudoprime with an odd reciprocal period. [Post]

「奇数の逆数周期を持つラビン・ミラー擬素数のうち、最小のものは4187」という曖昧な主張だが、「逆数周期」=「逆数を10進展開したときの循環節の長さ」、「ラビン・ミラー擬素数」=「奇数の合成数 q のうち、少なくとも一つの底 b ∈ [2, q − 2] について強擬素数となるもの」と解釈できる。

あるきっかけで、6月21日に上記の記述を目にした。「これは絶対間違ってる」という気がした。実際、全数検索によれば、上記命題には51個も反例がある! 上記の性質を持つ本当の最小のラビン・ミラー擬素数は185(底43など)、その逆数周期は奇数3。仮に逆数が純循環小数になるという制限を付けるとしても、最小は961(底229など)、その逆数周期は奇数465。

主張を正しいものにする一つの方法は「逆数周期が奇数」を「純循環かつ逆数周期が素数」に変えること。別の改訂案は「ラビン・ミラー擬素数」を「底10のラビン・ミラー擬素数」に変えること。後者は「任意の底→底10限定」なので命題が弱くなるが、この弱い形にはある種の理論的な興味がある。というのは、ある合同式を考えると「10進数としての逆数周期」は確率的な素数性テストに利用でき、そこにおいて「底10のフェルマー擬素数」は、やはり擬素数となる(2019-06-21 擬素数の逆数の循環節の長さ)。先週末、強弱両方の主張を新しいキュリオとして提案したが、何の反応もなかった。今週末、コメント送信フォームから上記の指摘を送ってみたら、今度は1時間ほどで返事があり、結局、このキュリオは「弱いバージョン」に改訂された。

*

現時点の本音としては、この弱いバージョンは、つまらない。これがキュリオ(珍品)なら、任意の底 n について、同様のもの(逆数を n 進展開した周期が奇数になる最小のラビン・ミラー擬素数)を考えることができ、それらの一つ一つがキュリオということになってしまう。「どんな底を選んでも、4187より小さいラビン・ミラー擬素数の逆数を素数周期の純循環小数にできない」という強い主張の方が、少なくとも見掛け上は面白い…。

誤りに気付いただけなのに、データベースのシステム上、筆者がこのキュリオの「新オーナー」になってしまった。これも何かの縁、こうなったら「4187のこの性質は、本当に面白いんだよ!」と言えるように、研究してみたい。上記のように、興味深い問題と結び付いていることは確かなので…。

去年まで Prime Curios! に参加すること自体、考えてもなかったけど、今年1月、思い立って「79の不思議」について初投稿(昨年末に「フェルマーのクリスマス定理で遊ばせて!」で書いたもの)。この79の性質は、本当に面白いし、数学的にも奥が深い。一意分解整域になる世界・ならない世界の分かれ目は何か…。答えがあることも、答えを与えてくれる理論の名前も分かっているが、短絡的に答えを見てしまうのも味気ない。もうちょっと山麓をさまよってみたい。

2019-07-01 汝のあるべき姿に戻れ、4187(良い花)! 更新された「素数の珍品たち」。偽から真に変わったのは良いとして、やっぱりしっくりこない…。

あるべき姿(弱いバージョン) 「4187は、逆数を小数で書いたときに循環周期が奇数になるような、10より大きい最小の擬素数(10を底とする)である」 ← この形なら、意味を説明しやすい(下記参照)。

あるべき姿(強いバージョン) 「4187は、逆数の周期が素数になるような、10と互いに素な、最小のラビン・ミラー擬素数である」 ← 今回は立ち入らない。

現在の姿(中途半端) 「4187は、底10において、逆数の周期が奇数になるような、最小のラビン・ミラー擬素数である」 ← 弱いバージョンと同値だが、無駄に難解。「ラビン・ミラー」という条件は冗長。

説明。「10n−1 乗して n で割ったら 1 余る」という性質を持つ自然数 n を考える。式で書くと:

10n−1 ≡ 1 (mod n)

n が「底の10と互いに素な素数」なら(要するに2, 5以外の素数なら)、この関係は必ず成り立つ。例えば7は素数なので、10の6乗を7で割ると1余る。13も素数なので、10の12乗を13で割ると1余る。n が素数でないときは、一般には、この関係は成り立たない。例えば21は素数でない。そして、10の20乗を21で割った余りは1にならない。

ってことは、この関係を満たすか・満たさないかで、素数か素数でないか、簡易的なテストができる。2と5を例外として、この関係を満たさない数は、素数ではない。それはいいんだけど、時々いるんだよね…合成数のくせに、テストを通ってしまう「ニセ素数」が。例えば、9は合成数なのに、10の8乗を9で割ると1余る。ニセ素数。正式には、底10の擬素数と呼ばれる。もっとも 10 ≡ 1 (mod 9) だから、10の何乗を9で割っても1余るのは自明だが…。自明な例も含めて、底10の擬素数を小さい順に列挙すると:

9, 33, 91, 99, 259, 451, 481, …

これらの数(最初の9を除く)の逆数を小数で書くと、1/33 = 0.030303… は循環の周期が2、1/91 = 0.010989 010989… は周期が6、以下順に周期が 2, 6, 10, 6 となる。「あるべき姿(弱)」の意味は「4187も同じ底10の擬素数だが、これは逆数の周期が奇数。ちょっぴり珍しいよ」。丁寧に説明すれば、誰でも理解できそう。

そんなシンプルな話なのに、なぜわざわざ「ラビン・ミラー」という難しいことを言って話を複雑化するのだろう。そもそも「ラビン・ミラー擬素数」とは何なのか。少し考えると「12以上の奇数のうち、底10の強擬素数」という意味になることが分かる。けど、この条件のうち本当に必要なのは「12以上の擬素数」だけ。「奇数」も「強」も余計。「12以上」が必要というのも、その心は、自明な擬素数9を排除したいだけ。9を排除しないと、その逆数 1/9 = 0.111… の循環周期が1(奇数)なので「奇数の周期は珍しい」という話の前提がいきなり崩壊するから…。だったら素直に、「9を除く」とか「10より大きい」って言えばいいじゃん!

「底10の擬素数」というシンプルな条件なら、120万以下の擬素数は300個あって、そのうち「逆数の周期が奇数」は15個だけ(9を除外すれば14個)。まあまあレア。現在の「ラビン・ミラー擬素数」という重い条件を付けると、同じ範囲にラビン・ミラー擬素数は68個しかなく、そのうち14個が「奇数周期」。同じ14個だが、68個中の14個というのは別に珍奇ではない。

条件が必要十分でなく過剰。論理的に間違ってるわけではないが、しっくりこないし、レア感も低下してる。

2019-07-01 追記 ↓エディターの先生が「こんな感じならいい?」と再編集してくれました♪ 多分プロの数学者から見ると、論理的に同値=表面的な言い方の問題にすぎないのでしょうが…。もともとの命題(Post、2009年、偽) 4187 is the smallest Rabin-Miller pseudoprime with an odd reciprocal period. → 1回目の更新(2019年6月。真になった) 4187 is the smallest Rabin-Miller pseudoprime in base 10 with an odd reciprocal period. (正確には覚えてないがこんな感じだった) → 今回の更新(2019年7月) 4187 is the smallest pseudoprime > 10 in base-10 with an odd reciprocal period. (この方がシンプルでいいかと)

2019-07-04 強擬素数よりもっと強い(だいたいこんな感じ?)

q を底 b = 10 の擬素数とする。q − 1 = 2sd と書く。ここで s ≥ 0 は整数、d は奇数。

q − 120, 21, 22, … で割った商 2sd, 2s−1d, 2s−2d, … のうち、b の肩に乗せると ≡ 1 (mod q) となる最小の自然数を e = 2td, t ∈ [0, s] とする。q が擬素数という仮定から、必ずこのような e が存在(強擬素数でなければ t = s)。

mod q において be ≡ 1 なので、b の位数は e の約数。

t = 0 なら e は奇数なので、b の位数は奇数。この条件を満たす q第1種擬素数と呼ぶことにしよう(強擬素数のうちの、特別な場合に当たる)。一方、t > 0 なら e は偶数であり、しかも be/2 ≢ 1 なので、b の位数は、その因子として少なくとも1個の 2 を含み、奇数ではない。

1/qb 進小数で書いたとき、1/q の循環節の長さ(言い換えれば b mod q の位数)が奇数ということは、q が第1種擬素数ということと同値。だから 4187 の性質について「強擬素数」と断るのは冗長で、ただの「擬素数」の範囲で考えても同じこと。

自明な擬素数 9 も同じ性質を持っていて、それを除外しないと、この文脈では 4187 は輝いてくれない。擬素数の底が b = 10 なのも、地球人がたまたま 10 進法を使っているというだけで、数学的必然性に欠ける。それらの点を別にすれば、これは面白いパズルかもしれない。

3番目のキュリオは、15319333 に関するもの。33進数では「prime/2」がこの素数になる、というネタだが、これはボツになった。同時に、4187 について、問い合わせフォームから質問の形でコメントを送信したところ(自分の中の疑問を解決したかった)、こちらには反応があり、結局、思った通り、掲載されていた内容に不備があったと判明。普通、数学の命題は真偽がハッキリするものだが、既存のキュリオには定義が曖昧な用語が含まれていて、そのせいでクリアカットに判断できなかった。意外な展開として、もともとあった 4187 のキュリオが自分のキュリオという扱いになった。

4番目のキュリオは、65281 に関するもの。4187 の「16進数バージョン」のようなもので「逆数の循環周期が偶数になるような最小の底16強擬素数。120万以下に他にこのような数はない」。これは採用された。

2019-07-07 キュリオ3個目(1個採用・1個ボツ?)

(1) 底16の強擬素数の逆数を16進小数で書くと、ほとんどの場合、周期(循環節の長さ)が奇数になる。65281 = 0xff01 は最小の反例を与える。このような数は、120万以下の範囲には他にない。(今週末に提出、2日くらいで採用された。)

1/ff01 = 0.000100fffeff 000100fffeff... ← 4種の数字だけで書ける

(2) 33進数では (prime)33/2 は素数。(prime)33 − (curio)33 も素数。こちらは2週間くらい前に提出したが未編集のまま。ボツになったらしい。

単純に「自分が面白い」と思うものが見つかったら、またネタを送ってみたい。たとえボツになっても、考えを深めるきっかけになるし、それ自体が楽しいので…。

「The Prime Pages」は素数関係では国際的に有名なサイト(テネシー大学)。既知の巨大素数のランキング、素数に関する広範な用語解説を含む。「Prime Curios!」は、一般愛好家向け(マニアックな素数ハンターに限らない)コーナー。面白いトリビアを発見したら、誰でも投稿可(匿名でもOK、登録不要) → https://primes.utm.edu/curios/index.php ちなみに 4187 について間違った予想を投稿した Jonathan Vos Post はソフトウェア関係の大物で、採用数3位(500個以上)のキュリオ貢献者らしい。

5番目のキュリオは、656601 に関するもの。三つ子素数の内側にある最小のカーマイケル数。既に10年くらい前にリベラが「三つ子素数の内側にある底2擬素数」と記述しているのであまり新規性がないのだが、カーマイケルであることを含めて、独立に見つけた。

2019-07-11 トリプル・サンドイッチ・カーマイケル

連続する4個の奇数が、全て素数またはカーマイケル数になるケースがある。最初の例は p = 656597 から始まる。ウェブ上を検索した限りでは、このことはまだ明示的には言及されていないようだが、次のことを組み合わせると、同じ結論に達する。

(1) p = 641 から始まる三つ子素数は (p, p+2, p+6) 型で、かつ p+4 が底2の擬素数。これは、このパターンの最初の例であり、2番目・3番目の例も容易に見つかる(p = 656597, 6212357)。Rivera は2002年に既に同じ発見をしていた(Puzzle 170. Pseudoprimemania)。2番目の4つ組に含まれているのは、ただの擬素数ではなく実はカーマイケル。

底2の擬素数を包み込む三つ子素数の最初の数をリベラ素数と名付けよう。

(2) 2017年、Are there further "sandwich"-Carmichael-numbers? において Peter は、カーマイケル数 n = 656601 について n−2, n+2 が素数であることに注目した(素数にサンドイッチされたカーマイケル数)。実はこれ、ただのサンドイッチではなく n−4 も素数(下側のパンが2枚重ねのトリプル・サンド)。それが2番目のリベラ素数というわけ。

2~4番目のカーマイケル・トリプル・サンドは恐らくいずれも17桁で「下側が2重」タイプ。ただし「小さい順に何番目か」という部分は、Pinch のテーブル(Pseudoprimes and Carmichael numbers)に誤りがないことに依存する。

リベラ自身が(2002年のマシンでは)見つけられなかった4番目のリベラ素数は、p = 18958567877。これについては、19*10^9 以下の三つ子素数を全数検索して確認した。

6番目のキュリオは、113 に関するもの。1/2ポンド、1/3ポンド、1/4ポンドがグラムでいうと(端数は四捨五入)どれも素数になるという観察に基づく軽いネタ。これは前から知っていた純粋な発見で、ずっと「そのうち Curios! に送ろうかな」と思ってたもの。

2019-07-13 クォーターパウンダーというサンドイッチ(ハンバーガー)

パズル(一般向け) 100 より大きい3個の素数 q, r, s を見つけてください。ただし 4q, 3r, 2s は連続する3個の整数(例えば 205, 206, 207)です。

どうでもいいような問題だが、面白いのは最小の解 q, r, s がそれぞれ、1/4ポンド、1/3ポンド、1/2ポンドをグラムで表した値(端数は四捨五入)になること。

このパズルを思い付いたきっかけは「クォーターパウンダー」というサンドイッチ(バーガー)。正直、自分でも他人が面白いと感じるか確信がなかったけど、試しに Curios! に送ってみたら、これが通った。

「クォーター・パウンド」「ワンサード・パウンド」「ハーフ・パウンド」のバーガーは、全部、実在する商品。それらのパティの重さは、グラムでいうと全部素数…というわけ。1/4ポンド、1/2ポンドをパッとグラムに換算できると、実用的にも意外と役立つかも?

7番目のキュリオは、13741。底2擬素数のギャップが6の場所を見つけたので「双子擬素数」に倣って「セクシー擬素数」と名付けた。

2019-07-13 セクシー擬素数

「これはやり過ぎかな」とも思ったが「セクシー擬素数」を Curios! に送ったら、あっさり通った。

「双子素数」「双子擬素数」を拡張して、「セクシー素数」があるんだから「セクシー擬素数」を考えてもいいじゃん、という素朴な発想。(13741, 13747) が、底2における最小のセクシー擬素数。

実は2番目の「セクシー擬素数」ペアは「69」から始まる数。そのことについて一言ジョークを入れても良かったのだが、それはさすがに下品なので思いとどまった。個人のブログなら無問題でも、学校のサイトなので…。「セクシー擬素数」が通ることが分かっていれば、ポーカーフェイスで「2番目の例は、69から始まる7桁の数である」とコメントしたんだけどね!

8番目のキュリオは、4369。「16進レプユニットになる最小の底2擬素数」という観察(0x1111)、その形の2番目は 0x1111111 であるという指摘、それらを結合すると3番目(16進数で1を11個並べた数)になる、という観察。このきれいなパターンには、ちゃんと理由があるのだろうけど、いかにもキュリオっぽい。

9番目のネタは、561825265 に関するもの。「561 も 825265 も底2擬素数、それをつなげた 561825265 も底2擬素数」。これも珍妙だが、こちらはボツになってしまった。掲載基準もけっこう気まぐれ? 桁数が多いと審査が厳しいのかもしれない。調子に乗って「561 も 825265 も20進数では回文数」などと書いたのも、くど過ぎたかな?

10番目のキュリオ。第1・第2千年紀の合計日数は 730487日で素数…というもの。これは通った。純粋数学の世界では、暦・歴史が絡むネタは新鮮だったのかな?

11番目のキュリオは 595039。この素数は16進数 0x595039 = 5853241 と解釈しても素数。それをさらに 0x5853241 = 92615233 と変換してもまだ素数。同様に繰り返して、長さ7の連鎖を作れる最小の数。面白いかどうかは微妙。投稿時、長さ8の連鎖も複数得ていたが、あまり大きい数だと無味乾燥なので、長さ7の方を提出。

12番目のキュリオは 24046。{24043, 24046, 24049} の3個は、どれも底3概素数(本物のセクシー素数のペアの真ん中に、偶数の底3擬素数がある)。このパターンの底3擬素数は 10^10 未満に3個しかなく、しかも2個目は1個目(24046)の倍数。「素数ページで偶数のネタは難しいかな」と思いつつ、面白いからいいや、と提出。

13番目のキュリオは q = 9890881。q と 2q+1 がどちらも底2擬素数になること、そのような数は珍しいこと、4進数のレプユニットはしばしばこのパターンになることを書いた。どれも既によく知られている事柄だったが、Feitsma’s table を使って独立に再発見。「ソフィー・ジェルマン擬素数」と名付け、擬素数の長さ3の Cunningham chain は可能だろうか、と尋ねた。自然な問いなので、これもきっと誰かが既に考えてるんだろうけど…。送信のとき base-4 repunit がNGワード扱いされ当惑した(4th base が俗語で「セックス」だからと思われ。repunit in radix 4 と言い換えて投稿)。

14番目のキュリオは素数 50497 に関するトリビアで、再び暦ネタ。毎月の「2日」「3日」「5日」のような「素数の日付」をカウントすると、400年ごとにこの素数になる。

最初のころは、純粋に「たまたま見つけた面白いネタ」「数学的に自然な問題」を散発的に送っていたが、だんだん「ネタのためのネタ」的要素が混じるようになってしまった。「面白いことがあったら Curios! に提出する」から「Curios! に提出するためにネタを探す」にシフト。ゲームのような面白さもあり、つい夢中になって、2週間くらいの間「週7個まで」の制限ぎりぎり近く投稿してしまった。でも、表面的な現象の不思議さ・物珍しさを次々と追い求め、その背後にある数学を考えないのは浅はかで本末転倒。新しいことを考え学ぶきっかけにはなるのだが、「きっかけ」だけで終わらないように、これからは(既に送った上記のキュリオたちも含めて)現象の意味を掘り下げて考えるようにしたい。

Curios! では採用数ランキングが表示されるので「よし、世界ランク100位に入るまで送ろう」などと思ってしまうが、それは意味のない虚栄心。「次の目標は50位だ・20位だ」などと考えてしまうと、きりがない。巨大素数探しの競争に参加する気になれないのも、同じ理由。

「競争に勝つため」みたいな、目的のために努力するのではなく、それ自体が楽しいから夢中になる、ってのが一番いい。外部的な目的・動機付けなんて要らない。教科書を読んできちんと勉強すれば速いことだって、そうしたければ、自分のやり方で試行錯誤を楽しみたい。非効率だっていい。それ自体が目的だから。結果ではなくそれ自体が幸せだから。

世の中の進歩・学問の発展だって、大きなブレークスルーは「命令されてやる人・義務だから働く人・決められたことを忠実にやる犬」からではなく「それ自体を楽しむ人・気まぐれに行動する猫」から生まれるんじゃないだろうか?

資料を調べたければ(教科書を読みたければ)、そのときはそうすればいい。「今はこうしよう」って感じたら、何でもそうすればいい。「こんなことしてる場合じゃない」って分かっていながら、逃避的にゲームに熱中する…みたいなのとは違うよ。後ろめたい逃避的な遊びでは、純粋に楽しめないからね!

2019-07-27 15番目のキュリオとして、62481801147341(テトラコンタンの異性体の数)を出そうとしたら、2018年9月に既に出されていた。数論の人は純粋志向で、有機化学なんて興味ないだろう、というイメージがあるが、そうでもないのね…。せっかくなのでついでに書いておくと、5より大きい素数になるのは、この C40 に続いて C112 と C149。素数愛好家は、この3個目に反応すると思われ。M149 は有名なメルセンヌ素数なので…。これらは純粋な理論上の数で、物理的な意味で、本当にこの数の異性体が存在し得るわけではない(Isomer Count)。

2021-01-27 (参考)上記の件について、日本語のウェブページを発見しました。
https://web.archive.org/web/20180307122946/http://www.org-chem.org/yuuki/mow/0505/crowd.html 「不可能炭化水素」

2019-07-30 堀井憲一郎という人は、読書記録を付けていたがそれをやめて、その理由についてこう言っているそうだ(*)。「本を読みたいんじゃなくて『読んだ本の記録数を伸ばしたくて読む』という気持ちが出てきたから」「数字を数えだすと、数字のほうが大事になって、本体はどうでもよくなってしまう」 上記の現象も同様で、知らないうちに「掲載数を増やしたい気持ち」が出てきて、「純粋に数学を考える気持ち」に干渉するようになった。

ともかく最初は2019年1月ごろ、気まぐれに1回投稿しただけなのに、7月上旬に編集者とメールでやりとりしたのがきっかけとなって、7月には記録上・合計13個も送ってしまった…。計3個くらいボツになったが、11個掲載。10個掲載でランク90位台になって「幼稚な目標」も達成されたのに、そこでやめず、さらにネタを考えてしまう。これはちょっとやばいし(addictive)、あるべき状態ではないと感じた。

本当にそのこと自体を楽しんでいるか? それとも、それをやったことを人に見てもらいたい・評価してもらいたいだけなのか? 昔、1週間かけてヘキサデカン(C16)の異性体10359個を手動で数えたことがあるが、誰かに自慢するためにやったわけではないし、実際それをやったこと自体、誰にも言わなかった。多分そういうスタンスが、自分には一番合ってる…。「面白いことが見つかったら共有するけど、それは副産物」みたいな。

2019年10月31日

追加 Curios

(#15) 2019年8月。553 は、固定された 1 < b < q−1 に対して q, 2q−1, 4q−3 がいずれも b-擬素数になるような最小。#13 で自問した擬素数チェーンの一種(弱い例だが、もっと強い例を見つけるのは困難)。

(#16) 2019年9月。p = 53176534057553 は sqrt(k)*p, k=1..15 の整数部分が素数または半素数になるような唯一の素数 < 10^11 である。

(#17) 2019年10月。アルファベット順でフランス語最後の素数は
20*10^120 + 20*10^66 + 23*10^18 + 23*10^6 + 23*10^3 + 349 =
20000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000023000000000023023349
である。もともとリベラが考えたネタだが、リベラの結果を改善し、採用された。整数をあえて分数で表現すれば、アルファベット順でさらに後ろにできるかもしれないが、それは数学というより「言葉遊び」だろう。

2019-10-22 「最後の素数」(その1)

素数に「本当の最後」はないこと(いくらでも大きな素数があること)は、よく知られている。けれど例えば「無量大数」までの数詞を普通に使うという条件で、五十音順で日本語最後の素数を考えることはできる。Rivera は数日前、フランス語について、同様のことを投稿した。いわく:

「S = 23000000000023023661 は、アルファベット順において、フランス語の最後の素数である」

Alphabetically, the last prime in French: "vingt trois trillions vingt trois millions vingt trois mille six cent soixante et un." By Pierre Tougne (1982), sent by Jean Charles Meyrignac. [Rivera]

上記の主張は、いろいろな意味で正しくない。ABC順でこれより後ろの素数はたくさんある! 数学パズルや素数が好きな方は、挑戦してみてほしい。

〔フランス語の数詞の参考資料〕1000まで1個ずつ書いてあるページ数値を単語に変換してくれるサイト

★考えても分からない方は → ヒント

注: 現在(1961年以降)のフランスでは、公式にはロングスケールが使われる(billion=1兆, trillion=100京)。実際の用例上は、必ずしもそういう言い方にはならないのだが、このパズルでは公式ルールを使う。英語風のショートスケール(billion=10億, trillion=1兆)ではない。英語と違い、フランス語の million, billion などは、2倍以上だと末尾に -s が付く。cent, mille は英語の hundred, thousand と同じで、2倍以上でも -s が付かない(※)。

(※)例外として、下3桁が端数のない 200, 300, …, 900 のときは cents が使われる(200=deux cents, 201=deux cent et un)。80=quatre-vingts, 81=quatre-vingt-un における vingt と同様。ここでは素数を考えているので、例外ケース(100の倍数)は無関係。

「最後の素数」(その1)のヒント: 下記のように、リベラの数 S では ????? の部分に six がある。辞書順で six より後ろの単語が ????? に来るようにできれば、アルファベット順で S より後ろになる例が一つ見つかったことになる。

S: Vingt-trois trillions vingt-trois millions vingt-trois mille six cent soixante et un
T: Vingt-trois trillions vingt-trois millions vingt-trois mille ?????

2019-11-01 「最後の素数」(その2) アン・ドゥー・トロワ、おフランスざーます!

その1の続き。フランス語なんて縁がない人でも「アン・ドゥー・トロワ」くらいは聞いたことあるでしょう。ABC順で trois の方が six より後なので、????? の部分が trois やそれに似た言葉になれば、Sより後ろの素数の一例となる。

S: 23000000000023023661
Vingt-trois trillions vingt-trois millions vingt-trois mille six cent soixante et un
T: 23000000000023023???
Vingt-trois trillions vingt-trois millions vingt-trois mille ?????

従って、上記の形の数のうち、下3桁が「3」か「30」台か「300」台になる素数が一つでもあれば十分だが、最初の2種類の可能性は、すぐ否定されてしまう。

23000000000023023003 = 3で割り切れる
23000000000023023031 = 409で割り切れる
23000000000023023033 = 3で割り切れる
23000000000023023035 = 5で割り切れる
23000000000023023037 = 19で割り切れる
23000000000023023039 = 3で割り切れる

そこで下3桁が「300」台を考えると、1個だけ「343」が素数となる。

S: 23000000000023023661
Vingt-trois trillions vingt-trois millions vingt-trois mille SIX cent soixante et un
T: 23000000000023023343
Vingt-trois trillions vingt-trois millions vingt-trois mille TROIS cent quarante-trois

これで「Sはアルファベット順で、フランス語最後の素数」という主張を崩すことができた。この他、もし仮に下3桁を「001」「013」または「020」台または「600」台のある種の数にできれば S より後ろになるが、そのような素数は「647」(Six cent quarante-sept)だけであり、これは「661」(Six cent soixante et un)よりABC順で前なので、この桁数では T が唯一の反例。

注: フランス語の正確なスペルを覚えている必要はない。その1でリンクした参考サイトからコピペすれば十分。「フランス語」という表面に惑わされず「アルゴリズムの問題」と割り切ろう。

しかしまだ問題が解決したわけではない。実は T も「本当の最後」ではなく、アルファベット順でもっと後ろの素数を作る方法がある。その方法は「トリック」ではなく、あくまで「普通の数詞」の範囲だが、「京・垓・𥝱」の類いの非日常的表現(大きな数の名前)が絡んでくる。「ばびっと数え歌 でかい数編」がヒントになるかもしれない。

最終的には、あるタイプのばかでかい数の下3桁を調整して、なるべくABC順で後ろの素数を見つけることに帰着される。一般の整数について、素数性の判定は簡単ではない。上記の S や T にしても「たったの trillion のオーダー」とはいえ、ロングスケールでは2の64乗を超える。素朴な試行除算だけでは厳しい。

ここでは取りあえず PARI の isprime で素数性を証明した。24桁以内の数については「最初の13個の素数を底に SPRP なら、本物の素数」ということが証明されているので、それを自力でやってもいいのだが、まあ PARI を使うのが手っ取り早いでしょう。

2019-11-02 「最後の素数」(その3) 巨獣召喚

「メキニ・メキニ・ヌダラダラ~ いでよっ、アンデシリョン!」

じゃじゃーん Undécillion 「ぎゃおーん!」

1000000000000000000000000000000000000000000000000000000000000000000

テロップ「巨大怪獣アンデシリョン 10の66乗(100分の1無量大数)」

S や T の頭にある trillions を undécillions に置き換えれば、それだけで「もっと後ろ」の素数が非常に多数考えられる(アルファベット順で u は t より後ろなので)。S を見たとき最初に考えた抜け道は、これだった。だが安心するのはまだ早い。

ラスボス「ワーハッハッ、66乗ごときで巨大とは笑止千万・無知蒙昧。唸れ! 衝撃の! ヴィジャンティリョン!」

ぞぞっ・ぞぞっ・ぞぞぞっ Vigintillion 「うをおーん!」

1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

テロップ「檄!帝国・最終巨獣ヴィジャンティリョン 10の120乗

ラスボス「見ろ! 無量大数がゴミのようだ」

ABC順で v は u よりさらに後ろ。ABC順でこれより後ろの単位はない。これら2種類の単位を使って「フランス語最後の素数」が構成される。V1 より V2 の方が後ろであることに注意すれば、この先はほぼ一本道だろう。

V1: Vingt-trois vigintillions 23*10^120
V2: Vingt vigintillions       20*10^120

2019-11-06 「最後の素数」(その4) 10の120乗まで、キッチリ回せ!!

ここまでの話から、
p = 20*10^120 + 20*10^66 + 23*10^18 + 23*10^6 + 23*10^3 + x
0 ≤ x ≤ 1000
の形の素数が存在すれば、その中にフランス語最後の素数(ABC順)があることが分かる。だが100桁を超える巨大な数で「下3桁しかいじれない」というのは、相対的な大きさで言えば「針の穴のような細い隙間で素数を探す」ようなもの。そんな都合のいい素数がそもそもあるのか。あるとしても、どうやって見つければいいのか?

実は PARI の nextprime を使えば、候補はすぐに見つかる。該当するのは x = 349 または 657 または 727 の三つ。いずれの x に対しても p が本物の素数になることは、別途証明される。349 は trois から始まる言葉だが、残り二つは s から始まる言葉。だから、x = 349 のケースが「ABC順で最後」。

million, billion, trillion, ... と上がっていっても、ABC順で trillion より先には行けないように思える。常識の範囲ではそうだが、諦めずに11番目まで上がると undécillion が現れて「Tの束縛」が破れ、さらに20番目まで上がると vigintillion が現れて「Uの束縛」も破れる。もっと上の数詞は考えられるが、W より後ろの文字から始まる数詞はない。

相対的には「針の穴」でも、調べてみると、案外、素数が詰まっていた。100以下の素数は25個(4%)、1000以下の素数は168個(2%未満)…という減り方(どんどん密度が薄くなる)から素朴に考えると、122桁の数に1000分の3(0.3%)も素数が含まれているのは、ちょっと意外な気もする。エラトステネスのふるいによれば、数が大きくなればなるほど、何重にも何重にも「ふるいの弾幕」が張られ「一度も弾に当たらない(何の倍数にもなっていない)数」はまれになるはず…。もっとも素数が薄くなると「新しい弾幕の砲台」も減る。2の倍数・3の倍数・5の倍数・7の倍数…といった「古い弾幕」はどこまでも有効だが、「新しい弾幕」がだんだん薄まる結果、意外と「生き残る素数」も出てくる。

具体的に、
pi(x) = x/log(x)
pi(10^121) / 10^121 ≈ 0.003589
なので、計算上、122桁の数では整数1000個につき素数が3~4個ある。

素数マニアはよくメルセンヌ素数の類いを持ち出して「とんでもない桁数の素数が見つかりました。世界記録更新!」と大騒ぎする。2019年現在、既知の最大素数は約2500万桁、2番目は2300万桁。一見「こんなに大きな素数は非常に珍しい」かのような印象を与える。ところが上記と同様に考えると、同じ桁数の素数はもっともっといっぱいある(大ざっぱに、整数1億個につき1個以上)。巨大素数の新記録はソフト・ハード両面の進歩、工夫と情熱の産物であり、人類の進歩としては素晴らしいことなのだが、人類を外から見ると「2000万桁程度の素数は何億個も何兆個も何京個もあるのに、そのうち1~2個しか見つけられない」というのは自慢にならない。「おれの素数の方がでかいぞ。1000万桁を突破したぞ!」と虚勢を張っても、実際にはたった1000桁の因数分解ができない…。

(#18) 2019年10月。13323377777 は、英語でスペルアウトしたとき100文字を超える最小の素数である。ただし、全て (resp. 最後) の hundred の後ろに and を挿入するなら、1117373377 (resp. 3323373377) がそれに当たる。「数字をスペルアウトする」系のネタで #17 からつながる。採用された。

2019-10-23 10億102万4867

1001024867 は、普通に英語でスペルアウトしたとき、アルファベットの20種類の文字を必要とする最小の素数。「これは面白いものが見つかった!」と思いつつ、検索してみると…。またしてもリベラに、5年くらい先を越されていた(Puzzle 744)! さすがはカーロス・リベラ。さすがは無冠の帝王(笑)。リベラは、この手のネタにめちゃくちゃ強いだけでなく、有名なパズルサイトを運営していて、世界中からフィードバックを得ている。ちなみに、半年くらい前「あしたのジョーの登場人物と同姓同名ですよ」とメールに書いてみたが、その点については何の反応もなかった。数学遊び一筋で、漫画には興味がないのかもしれない。

リンク先のページでは、アルファベット22種(アクセント記号の有無は区別しない)を使うスペイン語の素数として、10^120 + 10^42 + 10^36 + 10^12 + Cn の形を扱っている。読者が C6 = 5410587 を報告、リベラはさらに小さな C2 = 3710587 を得ているが、これは本当の最小 C1 ではない。C1 の値は昨日リベラ自身が投稿し、筆者も独立に同じ値を得た。小さい順で C2 は2位、C6 は6位になるようだ。パズル好きの方は、C1 を探してみよう!

これらは、あくまで数学パズル。語学はあまり関係ない。スペイン語なんて「ウノ・ドス」くらいしか知らなかったが、数字をスペルアウトするアルゴリズムは資料を見て適当に考えた。「最後の素数」も同様で、フランス語はあんまり関係ない(たとえフランス語の達人でも、それだけでは解きようがない)。問題の核心は「100桁くらいの数の素数性をどう判定するか」。この部分は難しいが(もちろん試行除算だけでは無理)、やればできる範囲だろう。

(あくまで遊び。何かの役に立つわけではない。入試に役立つみたいな世俗的メリットは、何もない。)

リベラの下記のポカは、本人の計算ミスではなく、読者からのフィードバックをノーチェックでそのまま転載したのが原因だろう。少しでも疑う気持ちがあれば、簡単に反例が見つかる。でも肯定的に考えると、リベラがこれを投稿したから、話が広がった!

(#19) 2019年10月。197 について。オイラーの多項式を別にすると |8*k^2 + 8*k − 197| は、この形の最良の素数生成多項式である。k=0..30 に対して、別々の31種類の素数を生成する。絶対面白いはずだが通らなかった。既知と判断されたのだと思われる。このネタも、実はリベラの 2426256797 についてのネタ(数学的に正しくない)について考える過程で発見。

2019-10-25 連続31素数を生成する2次式

8k2 + 8k − 197 の絶対値を考えると、それは k = 0, 1, …, 30 に対して相異なる素数。連続40素数を生成するオイラーの式 k2 + k + 41 にはかなわないが、それに近いものである。

オイラーの式を別にすると、この型(1次と2次の係数が同じ2次式)の明示的な世界記録は 6k2 + 6k + 31 の連続29素数(A060844)だが、こっちは連続31素数。ある意味、世界記録を塗り替えた!

素数生成多項式は検索が盛んであり、8k2 + 8k − 197 のような単純なものは、当然とっくに知られているはず。同じ形の式はなぜか見つからないが、本質的に同じ 8k2 − 488k + 7243 が2005年に報告され、A272160 にもなっている。冒頭の形の方がシンプルで良いのに、なぜそんな書き方をするのか。想像だが「k = 0, 1, …, 60 の連続61入力に対して素数になる」と言いたいために、複雑な形にしているのでは…。実際に生成されるのは31種であり、同じ素数を2回ずつ生成して見掛けの数を水増しするのは、美しくない。「1次と2次の係数が同じ(小さい自然数)で、定数項が小さい素数」と決めれば(※)、全数検索は容易であり、従ってランキングを確定できる。その結果、連続29素数を生成する別パターンの式も見つかった。

「素数生成は研究され尽くして、遊びで新規参入する余地などない」という気がするが、アイデア次第で意外と隙間もあるのかもしれない。例えば、連続○素数という数は小さくても、それら○個の素数の全て(あるいはほとんど)が何か特別な性質を持つ…というような珍しいパターンを探すと面白いかも。

(※)この前提自体、必ずしも自然ではないが、定数項が正の場合、そうすれば簡単な漸化式でも書ける。オイラーの k2 + k + 41 でいえば、生成される 41, 43, 47, 53, 61, … は定数項を初項として、次々に 2, 4, 6, 8, … を足しているとも解釈可能。

(#20) 2019年10月。f(0) = 193 から始めて f(k) = f(k-1) + 90k for k=1..9 は10個の素数を生成し、それらのどの素数も、桁の和が等しい。上記と同系統の素数生成2次式だが「桁の和一定」という条件を付けたもの。このような最小の例。この時点で既に14要素くらいの同様の例を得ていたが、試しに小さいものを送ってみた。9の倍数を足して桁の和が変わりにくいのは当たり前という印象もあるだろうが、実際には桁の和が固定されるわけではなく、しかも素数という条件と重なるので、要素数が多い場合、シンプルな例はかなり少ない。

(#21) 2019年10月。46662004177 = 0xADD45ADD1 は、次の素数を生成する方法を16進で「自己言及」する最小の素数。14進なら ADD9ADD3 があり。ポインターのアドレスのようで面白いと思った。

2019-10-27 誰も考えことのないタイプの素数

p = 46662004177 は、一見、何の変哲もないランダムな素数に見える(反復桁が多いという特徴はあるが)。

16進数に直すと ADD45ADD1 であり、これは「45を足せ。1を足せ」と読める。実際に p+45+1 を計算すると何が起きるか。結果は q = 46662004223 であり、q は p の次の素数。すなわち概念上、素数 p は f(x) = x+45+1 という操作をコーディングした「ゲーデル数(のようなもの)」と解釈でき、その「ゲーデル数」が表す操作をその「ゲーデル数」自身に適用することで次の素数が生成される…という、ある種の自己言及的性質を持っている。ADD は自然言語であり、本物のゲーデル数ではないが、ちょっとワクワクする!

14進数の ADD9ADD3 すなわち10進数の 1159386637 は、さらに小さな同様の例。

36進数なら、アルファベットの全部の文字が使える。「完全自己言及素数」(自分自身を生成する操作を表す文字列。その文字列の指示に従うと、その数自身になる)を作れるかもしれない。

(#22) 2019年10月。129023 は、2進数で1が15個ある最小の素数。下4桁を並び替えた 2039 は、2進数で1が10個ある最小の素数。「2進数で~」の部分は既知だが、並び替えの部分が面白いと思った。#20 の「桁の和」つながりの小ネタ。

(#23) 2019年10月。285281 は、1より大きい連続奇数から作ることができる最小の4つ子素数の先頭。すなわち (285281, 285283, 285287, 285289) は 281, 283, 285, 287, 289 を文字列として連結することで作ることができる。#19の出発点となった 2426256797 は10要素のベクトルの先頭要素だが、24, 25, 26 を含んでいる(そのような最小例ではない)。もっと小さい規模の組み合わせで同じようなことを考え、4要素のベクトルに行き着いた。「1より大きい連続奇数」の「1より大きい」を外すと、一桁の奇数を並べた形のトリビアルな例が見つかる。

2019-10-26 「対リベラ戦」第3ラウンド(笑)

数日前、Rivera は P(0) = 2426256797 が次の性質を持つことを指摘した。

性質「k=1..9 に対して P(k) = P(k-1) + 2k も素数である」

上記の主張は正しいが、それに続けて「この性質を持つような、もっと大きな列は知られていない」とも主張していて、それが問題。もっと大きな例を直接構成することは、易しい。

この列は、初項が素数 p で、階差 2, 4, 6, ... を持つのだから、一般項は p に三角数の2倍を足したもの。すなわち k^2 + k + p の形のオイラー風・素数生成式になる。これは熱心に研究されている分野で、同じ性質を持つ P(0) は何千個も記述されている(A191456)。リベラは「より大きなものは知られていない」と言うけれど、2426256797 は何千種類も知られている中で「13番目に小さい雑魚」にすぎない(追記)。

だからといって、速攻 Curios の編集者に連絡するのは「先生に言い付ける」みたいで嫌な感じなので、またメールを書いて直接リベラに連絡したのだが…。「数学的に明らかに間違っている主張」に気付いた場合、瞬時に撤回するのが普通だろう。けれどリベラは「どうするか未定。もう少し考える」という反応。仕方がないので、2426256797 を「無理やり面白く」する方法を考えてみた。

「k=1..9 に対して P(k) = P(k-1) + 2k も素数になるような最小の素数(ただし桁の6個以上が偶数であるとする)は、P(0) = 2426256797」

一応、数学的に正しい主張になった(笑)。リベラには「スペイン語バージョン」の C2 も取り消すようにそれとなく言ってみたのだが(C1 が本当のチャンピオンで C2 はあまり面白くない)、思い出が詰まっているのか、これを消すつもりはないらしい。「フランス語バージョン」については、残念ながら明らかな反例が見つかったので、議論の余地はなく、直接編集者に連絡、リベラの数(実際には第三者の主張を引用したもの)は削除された。フランス語ネタ・スペイン語ネタ・オイラー風ネタと1週間のうちに3回もリベラに文句を言っているが、たまたまタイミング的にそうなっただけ。あくまで数学上の話であり、私生活でけんかをしているわけではない(メール上ではフレンドリーな関係)。それどころか、リベラは「クォーターパウンダー素数113」がたいそう気に入ったらしく、この週末もっと大きい例を探し求め、既に100桁以上の例を得たという。

リベラのサイトは、専門家向けの記事で参照されることもある。そんな大物なのだが、天才にありがちな「大ざっぱな面」も持っているようだ。水も漏らさぬ全数検索や考察・証明をしないで「これが最良」と主張しているケースがある。「昔のパズルの結果を投稿しているので、当時見つかった最善に当たる」とのこと。結果的にそれが刺激になるのだから、悪いことともいえないが…

2019-11-04 2426256797について

リベラの P(0) = 2426256797 についての観察は、単に「k=1..9 に対して P(k) = P(k-1) + 2k も素数である」というだけでなく、「P(k) の直前の素数は P(k-1) である」すなわち「その部分の素数ギャップが 2k である」ということを言いたかったらしい。それにしても「より大きな例は知られていない」という主張はおかしい(1秒で検索できるのだから)。「最も小さな例である」と言うのなら、これはこれで興味深い。

Prime Gaps     2 4  6   8   10    12     14      16       18
Primes       +02 6 12  20   30    42     56      72       90
 2426256797 : PP-P--P---P----P-----P------P-------P--------P
 6430890287 : PP-P--P---P----P-----P------P-------P--------P
 8518049207 : PP-P--P---P----P-----P------P-------P--------P
55065405671 : PP-P--P---P----P-----P------P-------P--------P
55373581421 : PP-P--P---P----P-----P------P-------P--------P
60590486081 : PP-P--P---P----P-----P------P-------P--------P
66945470477 : PP-P--P---P----P-----P------P-------P--------P
76566117071 : PP-P--P---P----P-----P------P-------P--------P
78067026071 : PP-P--P---P----P-----P------P-------P--------P
95748657617 : PP-P--P---P----P-----P------P-------P--------P

#22 と #23 の間で、リベラからメールが来た。#6 を一般化した問題の大きい解だった。お礼として、2426256797 の「間違い」を簡単に検出できる3行の Pari コードを返信。ホイールシーブの一種(追記)。

f(P) = q=P; for( k=0, 9, q+=2*k; if(!isprime(q),return) ); print(P);
g(n) = f(n+11); f(n+17); f(n+41); f(n+101); f(n+137); f(n+167);
forstep( n=0, 3e9, 210, g(n) );

(#24) 2019年12月。1062881: For n=9, 10, 11, 12, 13, the largest prime you can express using only n copies of n without concatenation, with any of the four operations and parentheses, is 2*n^(n-3)-1: (9+9)*9*9*9*9*9-9/9=1062881, (10+10)*10*10*10*10*10*10-10/10=19999999....

2019-12-11 わたしがタイタンになった日

ある理由から f(n) = 2nn−3 − 1 の形の素数を考えた。n ≤ 1000 の範囲では n = 4, 6, 7, 9, 10, 11, 12, 13, 129, 169, 645 の11個に限られる。f(7) = 4801, f(9) = 1062881, f(10) = 19999999 は、curios でもある。

副産物として 2 × 645642 − 1 が素数と判明。1805桁の素数に行き当たった。「1000桁以上の素数の発見者」は、かつてタイタンと呼ばれた(今どきのコンピューターなら大したことではないが)。f(n) 型の次の素数があるとすれば、恐らく1万桁以上(n > 3000)。

2019-12-12 わたしがタイタンになった日(2)

以下 n ≤ 1000 とする。g(n) = 2nn−3 + 1 の形の素数n = 3, 6, 8, 20, 75, 168 の6個の場合に限られる。

h(n) = nn−2 + 1 の形の素数は、n = 4, 6 の場合の 17, 1297 に限られる。

h′(n) = nn−2 − 1 型の素数は、n = 3 の場合の 2 しかない。

そうすると [6, 13] の範囲の8個の自然数 n のそれぞれについて、f(n), g(n), h(n) の少なくとも一つは素数である。特に、[9, 13] の範囲の連続5整数に対して、f(n) は素数。

これらの観察の意味は後回しにして、次に (n + 1)nn−4 − 1 型の素数を考えると、n = 5, 6, 9, 13, 22, 44, 49, 228, 344, 851 が該当する。最後のケース 852 × 851847 − 1 は、2485桁の素数。

2019-12-13 9個の9で書ける最大素数

昨日までの考察は「n 個の n と四則演算・丸括弧だけを使って書き表せる最大の素数は何か」という問題に関連している。例えば「9個の9」の場合、全数検索によれば p = (9+9)*9*9*9*9*9-9/9 = 1062881 が最大の素数。文字列としての連結(例えば2個の9を「99」として使うこと)は許されないものとする。

この「○個の△を使って何々を作れ」は古典的な数学パズルの一つであり、全数検索の原理は、「西暦・平成パズル」を解くアルゴリズムとして紹介されている。それだけなら「ありふれた問題」だろう。

ところで、上記の p は下記の f(9) に他ならない。n = 10 に対する解も、同様に
f(10) = (10+10)*10*10*10*10*10*10-10/10 = 19999999
であり、この性質は n = 11, 12, 13 に対しても成り立つ(しかし n = 14 に対しては不成立)。

簡単な考察によると、n ≥ 4 に対して、もし h(n) が素数ならそれが解であり、そうでなくもし h′(n) が素数ならそれが解であり、そうでなくもし g(n) が素数ならそれが解であり、そうでなくもし f(n) が素数ならそれが解。n = 9, 10, 11, 12, 13 の連続5整数が、この最後の「そうでなくもし」に該当し、その結果「n 個の n で書ける最大素数」が f(n) の形となる。これら4関数の値が一つでも素数になれば、面倒な全数検索を省いて、いきなり解が得られるわけである。この発見(分かってみれば当たり前なのだが)は、小気味よい。

「9個の9」「10個の10」…「13個の13」の最大素数が全部同じパターンになる、という点が、注目に値する。「7個の7」も同じパターンだが、「8個の8」については
g(8) = (8+8)*8*8*8*8+8/8 = 65537
となる。

2020年のCurios

24049

(#25) 2020-07-17: Consider Pell's equation x^2-Dy^2=1. If the least solution is greater than the least solution for any smaller D, then D is usually a prime congruent to 5 mod 8 (e.g., D=61); D=24049 is the largest exception to this, below 10^8.

2020-07-27 ところで、ペル・チャンピオンたち(「その30」参照)のほとんどは 8k+5 型の素数だが、値が小さい場合、例外がある。409 と 24049 は 8k+1 型で、この 24049 が「最後の例外」ではないかと思われる。他のチャンピオンたちの記録は「ケイリーの6乗アシスト」による「ドーピング」(?)の結果だが、24049 は「6乗アシスト」なしで(負のペル経由の「2乗アシスト」だけで、つまり3乗の違いという巨大なハンディーを物ともせず)チャンピオンになってしまうわけで、非常にユニークな素数(言い換えると、その平方根の連分数展開は極めて珍しいパターン)といえるだろう。1週間以上前の話だが、このネタで 24049 の方は、素数キュリオに収録された。

2020-07-29 風変わりなチャンピオン24049

24049のトリビアは次の通り。

「ペル方程式 x^2-Dy^2=1 を考える。その最小解が、より小さなDに対するどの最小解よりも大きいとき、普通、Dは8を法として5と合同の素数である。10^8未満において、D=24049はこれに対する最大の例外である。」

ペルでちょっと遊んだことがある方ならおなじみでしょうが、D=61やD=109の場合、最小の自然数解が記録的にでかくなる。この「記録的」現象が起きるDを調べると、ごく一部の例外を除き、8で割って5余る素数になっている。この観察は「野蛮な解法(その11)」でメモした。大筋では「その29」のケイリーのNoteと結び付いていた。もし x^2-Dy^2=−4 に意味のある解があるなら、その解のざっと6乗がペルの最小解であり、この現象が起きる必要条件(十分条件ではない)が、8で割って5余るということ。細部の説明は少し間違ってるかもしれないが、そんな感じで「8を法として5と合同の素数」が大暴れ。

けれど、それ以外の素数が新記録を作るケースがある。D=24049 は、その最後の例! …と言い切りたいところだが、残念ながら、野蛮な方法では「10^8未満において」というただし書きを消せない。実際にはDが素数のケースについて、もう一桁上の10^9まで全数検索していて、頑張れば「10^9未満において」まで風呂敷を広げられるが、いずれにしても、単なるブルートフォースでは有限の範囲でしか議論できない…。直観的には、上記「6乗オーダー」をそれ以外の方法で乗り越えるのは無理なので、D=24049 が最後だと予想されるが、本当にそうなのだろうか。議論の便宜上、そうだと仮定するとして、24049 という数は何がそんなに特別なのだろう?

学校の数学には必ず正解があるんだろうけど、こういう「遊びの数学」「野性の数学」は分からない。頑張ればできることなのか、専門知識が必要な難解なことなのか、はたまた専門家にも未解決の問題なのか…

数論は未知がいっぱいの不思議な世界なのに、散策を楽しむ暇もなく、規格化された教科書を与えられ、天下り的に理論を押し付けられ、競争材料にされ、一般的なイメージとしては「数学=ストレス」になっているのは、切ない。教科書はゲームでいえば攻略本のようなもの。ゲームをしないで攻略本だけ読んでも、楽しいわけない。ひたすら高い山に登りたければ「200年前の数学者が10年かけて見つけたこと」を3行にまとめてもらった方が効率がいいのだが、幸せを味わいたいのなら「200年前の数学者が発見したこと」を独立に再発見する喜びの方が大きい。

63158401

(#26) 2020-08-01: The exact number of seconds in two years can be prime: 63158401. This happened for example in 2011-12, 2012-13, 2016-17, when we had 1 leap day and 1 leap second. The number of days in the last two millennia was also prime (see PC730487).

#25、#26は両方収録されたが、#26に関してはネタがかぶったため(別の方が実質的に同じことを投降し、未編集のままになっていた)、その方の名義で掲載された。わざわざ G. L. Honaker, Jr. からメールで連絡があって、何事かと驚いた(これまで採用になっても、不採用になっても、一度もメール連絡などなかったので)。

199081

(#27) 2020-08-09: The smallest prime of the form p^3+q^3+r^3, where (p,q,r) is a prime triplet.

シンプルでたわいないが、面白いと思ったので…。

2021年・2022年のCurios

2022年2月現在、このうち実際に収録されているのは、#29 と #30。

18379

(#28) 2021-11-25: The smallest integer d such that any of the first 10 primes can be written as |x^2-d*y^2| with some integers x, y.

5231

(#29) 2021-12-22: The smallest p > 5 such that both (p, p+2, p+6) and (prime(p), prime(p+1), prime(p+2)) are prime triples: both (5231, 5233, 5237) and (51131, 51133, 51137) are prime triples, where prime(5231) = 51131, prime(5233) = 51137.

1331

(#30) 2022-02-20: The start of the smallest "anti prime quadruple," where none of {30n+11, 30n+13, 30n+17, 30n+19} is prime.

84

(#31) 2022-06-04: There are exactly 84 Gaussian primes with a norm <= 84. That is, 8*f(84) + 4*g(84) = 84, where f(n) = #{primes 4k+1 <= n} and g(n) = #{primes not 4k+1 <= sqrt(n)}. Although 8*f(84) can't be too different from 4*pi(84) = 92 plus we have 4*g(84) = 12, this equality holds, as Chebyshev's bias is abnormally high at 83.

数えてびっくりガウス素数」の関連ネタ。カウントでは、単数倍の違いは無視されていない。100、128なども同じ性質を持つが、83におけるバイアスは極端で、この数以下の素数の中にはバニラ素数が40%未満しかない。

暦・天文

→ 暦・天文


メールアドレス(画像)