tsujimotterのノートブック

日曜数学者 tsujimotter の「趣味で数学」実践ノート

2021は合同数

ちょっと早いですが明けましておめでとうございます!2021年も良い一年になりますように!

ところで、毎年私は 今年の西暦にまつわる数の性質 について調べているのですが、2021 についても面白いものを見つけたので紹介します。

それは 「2021は合同数」 であるということです!

マニアックすぎて、この性質を知っている人は世界で僕一人だと思うのですが、とても面白いので紹介したいと思います。


合同数とは

合同数とは「3辺の長さがともに有理数であるような直角三角形の面積になる整数」のことです。

f:id:tsujimotter:20201231210058p:plain:w300

たとえば、辺の長さが   3, 4, 5 の直角三角形は、3辺がともに有理数です。その面積は  6 ですから、 6 は合同数です。

 6 の例は辺の長さが整数なので簡単そうに見えますが、一般には辺の長さは有理数でもいいので、問題はかなり複雑になります。たとえば、 7 の例を見ると驚くことでしょう。
tsujimotter.hatenablog.com


「ある数  n が合同数かどうか?」 という問題は見た目に反して奥が深く、真面目に考えると楕円曲線とか保型形式とかが出てきたりします。tsujimotterは楕円曲線も保型形式も大好きなので、大変興味のあるテーマです。
tsujimotter.hatenablog.com


というわけで、合同数の判定は一般に難しいわけですが、実はとても簡便な判定法が 予想 されています。まだ予想(つまり未解決問題)なので、「予想が真であれば」という条件付きですが、大変興味深い判定法です:

平方因子を持たない正の整数  n を  8 で割った余りが  5, 6, 7 のいずれかであるとき、 n は合同数である(予想)

2021 は 8で割ったあまりがちょうど5 となります。

 2021 \equiv 5 \pmod{8}

この事実を確認して私はテンションが上がりました。なぜなら、上の予想が真であれば2021は合同数ということになるからです。


合同数かどうかを適当に調べていたわけではなく、ちゃんと根拠があって調べていたわけですね。みなさんもよろしければ、8で割ったあまりが5, 6, 7の数を見つけたら、合同数かどうか疑ってみてください。

たしかに2021は合同数であった

上の判定法は予想ですから、本当に2021が合同数であるかは確証が持てません。

確信を持って合同数であるというための直接的な方法としては、面積が2021になる直角三角形を見つけることです。


そして、実際見つけた直角三角形はこちらです:

f:id:tsujimotter:20201231210829p:plain:w500

なかなかとんでもない分数ですね。笑

実際、 a^2 + b^2 = c^2 と  \frac{ab}{2} = 2021 を満たしますので、合同数の条件はちゃんとクリアしていることが確認できます。

コピペしたい人もいるかと思いますので、ここに載せておきます:

  •  \displaystyle a = \frac{1338332}{36261}
  •  \displaystyle b = \frac{1704267}{15562}
  •  \displaystyle c = \frac{65213606345}{564293682}

探し方

2021の直角三角形を探したプログラムは次のものです。SageMathというものを使っていまして、オンライン上の実行環境で以下のコードを貼り付ければ計算してくれるはずです:

# n: 判定したい合同数
n = 2021

# n に対応する楕円曲線 E_n : y^2 = x^3 - n^2 x
E = EllipticCurve([0,0,0,-n^2,0]); E

# E をプロット
plot(E)

# E_n の無限位数の点の生成元(生成元が存在すれば、n は合同数)
E.gens()

# 生成元を P とする
P = E.gens()[0]; P

# P の2倍点 (x : y : 1) を求める(y > 0 であれば合同数の三角形に対応する)
Q = 2*P; Q


# 点 Q の x, y 座標を取り出す
x = Q[0]
y = Q[1]

# 直角三角形の辺の長さ (a, b, c)
print ""
print "直角三角形の辺の長さ (a, b, c)"
a = sqrt(x+n) - sqrt(x-n); a
b = sqrt(x+n) + sqrt(x-n); b
c = 2*sqrt(x); c

結果はこちらです:

Elliptic Curve defined by y^2 = x^3 - 4084441*x over Rational Field

[(592813867/210681 : 10042807193036/96702579 : 1)]
(592813867/210681 : 10042807193036/96702579 : 1)
(4252814452520624259025/1273709438180468496 : -220766081361905365893904938072985/1437492377338015896185684544 : 1)

直角三角形の辺の長さ (a, b, c)
1338332/36261
1704267/15562
65213606345/564293682

たしかに、最後に  a, b, c の組が出てきていますね。


この方法は、楕円曲線に基づいています。判定したい自然数  n に対して、楕円曲線

 E_n\colon y^2 = x^3 - n^2x

を考えます。この楕円曲線の  \mathbb{Q} 上のランクが正であること(つまり無限位数の点を持つこと)と、 n が合同数であることが同値となります。


単にこれだけで判定ができるわけですが(ただし後述のようにランクの計算は難しい)、実際に無限位数の点  P をとって  2P の座標  (x, y) から合同数の直角三角形にあたる  a, b, c を得ることができます。

 \displaystyle a = \sqrt{x+n} - \sqrt{x-n}
 \displaystyle b = \sqrt{x+n} + \sqrt{x-n}
 \displaystyle c = 2\sqrt{x}


しかしながら、正直いうとこの方法で見つかるとは思っていませんでした。ランクを計算したり、無限位数の点を計算するのが一般には難しいからです。

2-descentという方法を使うのですが、これは「楕円曲線の有理点全体のなす群」を「セルマー群」と呼ばれる群に埋め込んで計算する方法で、セルマー群との差が大きい場合(つまりテイト・シャファレビッチ群が大きい場合)には、計算ができないという問題を含んでいます。

これまでも上記のプログラムで、いろんな自然数の計算をしたことがあったのですが、 n が大きくなると途端に計算ができなくなるのでした。今回の  n = 2021 はたまたまうまくいったのです。2021のこの性質は喜ぶべき性質である ということですね!

いやー、合同数って面白いですね!


それでは今日はこの辺で!

2021年も楽しく日曜数学していきましょう!

参考文献

合同数問題について、楕円曲線と保型形式を総動員して取り組む本です。楕円曲線・保型形式の教科書としても定番となっています。新年のお祝いに買ってみてはいかがでしょうか。

楕円曲線と保型形式

楕円曲線と保型形式