他のメモへのリンク集。リンク集を飛ばして、このページの前書きへ。本文の目次へ。21、22などの数字は、メモの番号です。
![]()
遊びの数論54の続き。誤字脱字・間違いがあるかも。

![]()
2026-01-21 二重根号の外し方 正五角形は侮れない
問題1 一辺の長さ 2 の正五角形の、対角線の長さが 1 + √5 であることを示したい。
問題2 一辺の長さが 2 の正五角形の、高さ(頂点と反対側の辺の中点を結ぶ垂線の長さ)を求めたい。
問題1の記述が正しいとすれば、問題2は、三平方の定理を使って機械的に解ける。
問題2の解 直角三角形の底辺が 1、高さが ?、斜辺が 1 + √5 なので:
12 + ?2 = (1 + √5)2
∴ ?2 = (1 + √5)2 − 12 = (6 + 2√5) − 1 = 5 + 2√5
∴ ? = √(5 + 2√) ∎
二重根号が発生。正五角形関連は、トリッキーな根号処理が絡むことも多く、油断できない。
逆に、正五角形の高さが √(5 + 2√) であることと一辺の長さが 2 であることが、先に与えられたとすると…。三平方の定理から、対角線の長さを求めるのは同じ手間のようだが、単純計算では:
(対角線)2 = (√(5 + 2√))2 + 12 = (5 + 2√5) + 1 = 6 + 2√5
∴ 対角線 = √(6 + 2√)
答えは間違ってないけど、対角線の長さは 1 + √5 のはずなので、
√(6 + 2√) = 1 + √5
という変形が可能なはず。 √(A + √) のような形の「二重根号」を簡約するテクニックは、こういうシチュエーションで役立つ。任意の複素数 a + bi は = a + b√−1 なので、複素数 a + bi の平方根 √(a + bi) を求めることも、
√(A + √)
の形の二重根号処理だと捉えることができる。平方根はありふれた計算だし、複素数の平方根を考えなければならないこともある。「二重根号処理なんて、まれなこと」という感じもするけど、案外そうでもなく、応用範囲が広い。「i の平方根」なんかも、二重根号の問題として考えると簡単便利だし。
![]()
一辺 2 の正五角形の対角線の長さは、いろんな方法で求めることができる。「一辺 2」ってのは、便宜上の設定。「一辺 1」の方が良ければ、単に「一辺 2」の場合の答えを半分にしてもいい。
問題1の解 正五角形 ABCDE があるとして、(どの対角線でも長さは同じだけど)仮に対角線 BE の長さを求めるとしよう。対角線 AD と対角線 BE の交点を P とすると PB と DC は平行、 PD と BC も平行なので――そして BC = CD は正五角形の辺なので――、 PBCD はひし形。
従って DP は、正五角形の一辺 DE と長さが同じ。よって △EDP は二等辺。 △DBE も、もちろん二等辺。これら二つの二等辺三角形は、底角 E を共有するので、「等しい底角」の大きさが一致。必然的に残りのもう一つの(対応する)角も一致し、二つの三角形は相似。
さて PE の長さを x とすると BE の長さは 2 + x だ(なぜならBP は前記ひし形の一辺で、五角形の一辺と長さが等しい)。相似な二つの三角形について、
△EDP の底辺と斜辺の比 と △DBE の底辺と斜辺の比
は一致する。
x ∶ 2 = 2 ∶ 2 + x
∴ x(2 + x) = 4 つまり x2 + 2x − 4 = 0
これを解くと x = −1 ± √5。 x は線分の長さなので、正の値
x = −1 + √5
が題意に適する。結局、求める対角線 BE の長さは:
2 + x = 2 + (−1 + √5) = 1 + √5 ∎
√5 = 2.23606 79774… なので(富士山麓オウム鳴く):
1 + √5 = 3.23606 79774…
もし一辺の長さが半分の 1 だったら、対角線の長さも半分になって:
(1 + √5)/2
= 1.61803 39887…
この数値は「黄金比」と呼ばれる。 1.6 は「富士 + 1」の半分、 18 と 03 はそれぞれ「山麓」と「オウム」の半分、等々。
一辺 2 の正五角形の対角線の長さが約 3.2 であることは、作図からも確かめられる。対角線で結ばれた一方の頂点を中心に、半径 2 の円を描き(半径 = 辺の長さ)、他方の頂点を中心に半径 1 の円を描くと(半径 = 辺の長さの半分)、二つの円は交わらず、目分量で約 1/4 の隙間が生じる。対角線の長さは、ざっと 3.25 くらい、と。
![]()
いまやこの正五角形の高さは明らか。最初に書いたように:
√(5 + 2√)
5 + 2√5 = 5 + 4.472… = 9.472… なので、その平方根は明らかに 3 よりは大きいが 3.1 よりは小さい(312 = 961 であり、 3.12 = 9.61 は 9.472… と比べ過大)。
実際、再び半径 2 の円と半径 1 の円を描くと、正五角形の高さは 3 よりほんのわずかだけ(目分量で 0.1 程度)大きいことが見て取れる。実際の値は:
√(5 + 2√) = 3.07768 35371…
この数の二重根号を簡約することは、できない。
他方、正五角形の高さ(上記)を元に対角線の長さを求めると、最初に書いたように二重根号が生じる:
対角線 = √(6 + 2√)
この二重根号は、計算済みの対角線の長さ 1 + √5 と同じ数値のはずだ。
一般に √(A ± B) の形の A, B の一方または両方がそれ自身、平方根号を含んでいるとしよう。そのような多重根号に対処するとき、根号下の数たのたちの平方差が――つまり、二つの数それぞれを平方して引き算した A2 − B2 の値が――重要な役割を果たす。
√(6 + 2√) の例では、根号下の数たちの平方差は:
62 − (2√5)2 = 36 − 20 = 16
これは平方数 42 に等しい!
√(5 + 2√) は、数の形は似てるけど、対応する平方差は:
52 − (2√5)2 = 25 − 20 = 5
この 5 という数は、平方数ではない!
これが平方数になれば、根号を簡約できる。平方数にならない場合、普通の意味では簡約できない。
![]()
具体的なアルゴリズムは次の通り。 √(A ± B) が与えられたとき、上記の平方差 d がもし平方数なら、 A と √d の平均(足して 2 で割ったもの)を u として、 A の平均からのずれ A − u を v とすると、
√(A ± B) = √u ± √v
が成り立つ。右辺の ± では、 A ± B の ± と同じ符号を選択。
例1 √(6 + 2√) の場合、平方差 d = 16(上記)。
A = 6 と √d = 4 の平均 u = (6 + 4)/2 = 5
A = 6 の平均 u からのずれ v = 6 − 5 = 1
従って √(6 + 2√) は、
√u + √v = √5 + √1 = √5 + 1
に簡約可能!
例2 √(11 + 6√) の場合、平方差は:
d = 112 − 62⋅2 = 121 − 72 = 49
これも平方数!
A = 11 と √d = 7 の平均 u = (11 + 7)/2 = 9
A = 11 の平均 u からのずれ v = 11 − 9 = 2
従って √(11 + 6√) は、
√u + √v = √9 + √2 = 3 + √2
に簡約可能。
例3 √(2 + √) の場合、平方差は:
d = 22 − 3 = 1
これも平方数だ!
A = 2 と √d = 1 の平均 u = (2 + 1)/2 = 3/2
A = 2 の平均 u からのずれ v = 2 − 3/2 = 1/2
従って √(2 + √) は、
√u + √v = √(3/2) + √(1/2) = (√3)/√2 + (√1)/√2
= (√3 + 1)/√2
=
(√6 + √2)/2
に簡約可能。
![]()
上記のような計算法(二重根号外し)は、特に難しい計算ではない。なぜこれでうまくいくのか検討してから(次回)、同じアルゴリズムを「複素数の平方根」などに応用してみたい。(続く)
![]()
2026-01-22 二重根号なんて怖くない! √(5 − 2√) = √3 − √2
√(5 − 2√) = √3 − √2 のような「二重根号外し」は、素朴に眺めると謎めいている。なにそれ、 √(5 − 2) = √3 ってこと? 入れ子になってる √6 は、どこ行ったの…?
仕組みが分かってみると、実は簡単。上記の例なんかは、一瞬で暗算できる。多重根号簡約の一般論は難しいけど、簡単な「二重根号外し」程度なら、さくっと。
多重根号が簡約できるケースは、比較的まれ。でも同じアルゴリズムが、結構いろんなことに役立つ(複素数の平方根、複素係数の2次方程式、ある種の4次方程式など)。
![]()
前回、正五角形の対角線の長さに関連して、二重根号簡約の具体例を挙げた。「二重根号外し」の仕組みの説明。
√(A + ℓ√) の形の数(A, ℓ は正)を考える。例えば √(6 + 2√)。
ℓ√m = √(ℓ2m) のように、平方根の倍数については、一つの平方根にまとめることも可能(例えば 2√5 = √20)。そこで B = ℓ2m と置くことにすると、シンプルに
√(A + √) (✽)
の形だけを考えれば十分、ってことになる。
(✽)の形の二重根号を変形して = √u + √v の形にできたとしよう。つまり、
√(A + √) = √u + √v ア
が成り立った、と。そんな等式が、実際に成り立ち得るのか? A, B は与えられた定数、 u, v は未知数なので、前者を使って u, v を表現できれば理想だけど、直観的には「未知数が二つあるのに式が一つしかないんだから、情報不足。解けるわけねぇ」「そもそも左辺は複雑な二重根号。シンプルな右辺と等しくなるなんて、そんなうまい話、あるもんか」という気が、するかもしれない…。けどまぁ、とりあえず、外側の根号を外すため、アの両辺を平方して:
A + √B = u + v + 2√(uv) イ
〔注〕 イ右辺は (√u + √v)2 = (√u)2 + 2(√u)(√v) + (√v)2 = u + 2√u√v + v による。
仮に A が整数(あるいは一般に有理数)、 √B が無理数だとすると――それが典型的なシチュエーションだ――、イ左辺は「有理数と無理数の和」で無理数。それに等しいイ右辺も、当然、無理数。今 u, v がどちらも有理数と仮定すると、イ右辺の u + v は、有理数同士の和なので有理数。イ右辺に無理数成分があるとすれば、平方根 √(uv) だけ(ただし無理数の 2 倍も無理数なので、 2√(uv) も無理数)。
イ左辺の「有理数の部分」と「それ以外」、イ左辺の「有理数の部分」と「それ以外」は、それぞれ等しくなるはず:
A = u + v ウ
√B = 2√(uv) エ
エの両辺を平方すると:
B = 4uv オ
つまり uv = B/4 となり、ウと組み合わせると未知数 u, v の和と積が(A, B の式として)分かるので、 u, v を解とする2次方程式を作ることができる(そうしたければ)。それを解けば、未知数 u, v を「与えられた A, B の式」として表現でき、アの変形が可能になる!
〔付記〕 「未知数が二つあるのに、それを決定するための式(情報)が一つしかない」とも思えたけど、その一つの式に「有理数成分」「無理数成分」の二つの情報が含まれていることから、結局、ウ・エの連立方程式となった。
具体的な u, v の決定法。まず「2次方程式を解く必要がないシンプルなやり方」から。ウの両辺を平方すると:
A2 = u2 + 2uv + v2 カ
カからオを(辺ごとに)引き算すると:
A2 − B = u2 − 2uv + v2 = (u − v)2 キ
等式キが鍵。与えられた二重根号 √(A + √) の根号下にある二つの数 A, √B について、平方差 d ――つまり、それぞれ平方して引き算した
d = A2 − B
――を考えよう。 r = √d と置くと、 d = r2 で、キから、
d = r2 = (u − v)2 つまり† r = u − v ク
となる。
† r2 = (u − v)2 は ±r = u − v を含意するが、便宜上、ここでは ± のうち + を選択する(平方差 d が 0 以上の実数の場合、この選択は、 u ≥ v だと決め付けることに当たる)。ア右辺の √u + √v は、二つの数 {u, v} が一定なら等しい和であり、二つの数のどっちが u なのか勝手に決めても、結論に影響しない。
ウとクを辺ごとに足し算して:
A + r = 2u つまり u = (A + r)/2
ウからクを辺ごとに引き算して:
A − r = 2v つまり v = (A − r)/2
r = √d であることに留意すると、次の結論に至る。
命題1(一応のまとめ) √(A + √) を √u + √v の形に変形できる(A は正)。ここで d は、
平方差 A2 − B
であり、 u = (A + √d)/2, v = (A − √d)/2。ここで A 自身は、根号を含まない数だとしよう。すると、もし d が有理数の平方に等しいなら r = √d は有理数で、 u も v も根号を含まない。そのケースでは B の二重根号が外れて、一重根号だけの式に簡約される。
実践的には、次のように整理できる。
二重根号外しの基本アルゴリズム
入力 √(A + ℓ√)
① 根号下の数たちの平方差 A2 − ℓ2m を d とする
◇ d が平方数か判定
Yes ⇒ 二重根号を外せる(②へ) No ⇒ 外せない(あきらめて終了)
② A と √d の平均を u とする
③ A の平均からのずれ A − u を v とする(典型的には A は「平均」より大きい)
出力 √u + √v
②の u は、 A と √d を足して 2 で割ったものだから、命題1の u と同じ意味。従って③は、
A − u = A − (A + √d)/2
=
2A/2 − (A + √d)/2
=
(A − √d)/2
の計算に当たり、命題1の v と同じ意味。「A と √d の平均」「A の平均からのずれ」というのが、かえって分かりにくければ、命題1にあるように、
u = (A + √d)/2, v = (A − √d)/2
と考えてもいい(用途によって、どちらの考え方も役立つ)。
別解 上記では、ウの u + v とオの 4uv から、カ・キ経由でクの u − v を作り、ウとクの辺々の和・差から u, v を抽出した。もし2次方程式を解く気があれば、オの段階で既に u, v 自体の和・差が分かるので、直ちに u, v を求めることも可能。すなわち、
u + v = A, uv = B/4
なので、解と係数の関係から、 u, v は
x2 − Ax + B/4 = 0
の解。これを解いて:
u, v = [A ± √(A2 − B)]/2
d = A2 − B と置けば、最初に得た結論と同じ。∎
例題1 可能なら √(11 + 4√) を簡約したい。
解 112 = 121 そして (4√6)2 = 16⋅6 = 96 なので、平方差は:
d = 121 − 96 = 25
25 = 52 は平方数なので、二重根号を外せる(A = 11, √d = 5)。
命題1の方法をそのまま使うと:
u = (11 + √25)/2 = 8, v = (11 − √25)/2 = 3
あるいは、実践的アルゴリズムから:
A と √d の平均 u = (11 + 5)/2 = 8
A の平均からのずれ v = 11 − 8 = 3
いずれにしても、
√(11 + 4√)
= √8 + √3
となる(お好みで 2√2 + √3 と書いてもいい)。∎
〔別解〕 二重根号外しに使えるアルゴリズムは、複数の種類ある。扱う数が小さいときは、 √(a + 2√) の形に変形して、和が a で積が b の2数 u, v を探してもいい。例題1の場合、
√(11 + 4√) = √(11 + 2√)
であり、「足すと 11 で掛けると 24 になる二つの数」を考えると 8, 3 が見つかる。実際、
√(a + 2√) = √u + √v
が成り立つとすれば、その両辺を平方すると a + 2√b
=
(u + v) + 2√(uv)
なので、この形の二重根号に限っていえば、《和が a で積が b になるような二つの数 u, v》を探せばいい。
例題2 可能なら √(7 + 3√) を簡約したい。
解 72 = 49 そして (3√5) = 9⋅5 = 45 なので、平方差は:
d = 49 − 45 = 4
4 = 22 は平方数なので、二重根号を外せる(A = 7, √d = 2)。
u = (7 + 2)/2 = 9/2, v = 7 − 9/2 = 5/2
よって:
√(7 + 3√) = √(9/2) + √(5/2)
=
3/√2
+
(√5)/(√2)
=
(3 + √5)/(√2)
分母を有理化するため、分子分母を √2 倍すると:
= (3√2 + √10)/2 ∎
〔付記〕 例題1の「別解」の方法(和と積を考える)は、場合によっては便利だが、汎用性が低い。例題2に適用するのは、(可能だが)あまり便利ではない。
![]()
処理したい二重根号は √(A + ℓ√) の形とは限らず(A, ℓ は正)、 √(A − ℓ√) の形かもしれない。ア・イでは、
√(A + √) = √u + √v
と置き、両辺を平方して、
A + √B = u + v + 2√(uv)
を得たが、もし内側の根号の前の符号が負なら、
√(A − √) = √u − √v
と置いて、
A − √B = u + v − 2√(uv)
とすればいい。すると
A = u + v そして √B = 2√(uv)
となり、この条件は + の場合と共通(ウ・エ)なので、以降の処理は全く同じ。最後に u, v が求まったとき、
√u + √v の代わりに √u − √v
とするだけ。
〔補足〕 + のケースでは、「二つの数 {u, v} のどちらを u としても √u + √v の値は変わらない」ということから、便宜上、 u, v の選択法を固定した(u, v が 0 以上の実数なら u ≥ v)。 − のケースでは、変数名 u, v を入れ替えると √u − √v の値が変わってしまうので、どちらを u とするのか、必ずしも自由に選択できない。とはいえ、二重根号下の数が 0 以上の実数なら(それが実用上、最も重要なケース)、その根号は 0 以上の実数を表す。それに等しい √u − √v も、当然 0 以上の実数。よって u ≥ v という仮定は引き続き妥当。
例題3 可能なら √(5 − 2√) を簡約したい。
冒頭で挙げた例…。「和が 5 で積が 6」と考えると u = 3, v = 2 であることは明白だが、一応、一般のアルゴリズム通りにやってみる。
解 52 = 25 そして (2√6)2 = 4⋅6 = 24 なので、平方差は:
d = 25 − 24 = 1
1 = 12 は平方数なので、二重根号を外せる(A = 5, √d = 1)。
u = (5 + 1)/2 = 3, v = 5 − 3 = 2
∴ √(5 − 2√) = √3 − √2 ∎
〔注〕 真ん中の符号が + の場合、 √(5 + 2√) の簡約結果を
√3 + √2 と書こうが √2 + √3 と書こうが同じことだが、 √(5 − 2√) の場合には、簡約結果は
√3 − √2
であり
√2 − √3
とすることはできない。実際、後者の引き算結果は、明らかに負の数。ところが
√6 = 2.44948 97427… (煮よ良く弱く)
の 2 倍 = 4.898… を 5 から引いたものは正の数。その平方根 √(5 − 2√) も、もちろん正の数。
√6 = 2.44948 97427 83178… (煮よ良く弱く・梨フナ野菜) 弱火でじっくり煮込むのはいいが、梨とフナは合うのだろうか?

実用上のヒント。 √(A ± ℓ√) の A, ℓ が公約数を持つときは、原則として、それをくくり出してから処理する方が効率的。例えば、
√(20 − 5√)
を直接処理すると d = 202 − 52⋅7 = 400 − 175 = 225 となり、それは 152 なので:
u = (20 + 15)/2 = 35/2, v = 20 − 35/2 = 5/2
となる(以下略)。計算上、それでも問題ないが、代わりに
√(20 − 5√)
=
√5 × √(4 − √)
と変形してから、二重根号の部分を処理すると d = 42 − 7 = 16 − 7 = 9 = 32 なので、小さい数の計算で済む:
u = (4 + 3)/2 = 7/2, v = 4 − 7/2 = 1/2
∴ √u − √v
= (√7 − 1)/√2
= (√14 − √2)/2
求めるものは、その √5 倍なので:
(√70 − √10)/2
特に A, ℓ の公約数が大きい場合(例えば3桁)、それをくくり出せば、かなり計算量を節減できるだろう。
![]()
二重根号外しの例題なので、簡約できる例ばかり取り上げた。現実には、簡約可能な多重根号はまれな存在。だって d が平方数にならないと簡約できないわけで、例えば 1 から 1000 までの整数だけを考えると、平方数は 1, 4, 9, 16, ···, 961 の 31 個しかない。その範囲の d について根号外しができる確率は、単純計算で 31/1000 つまり 30 回に 1 回未満。
上記アルゴリズムでは、 d が平方数かどうかの判定が必要。 100 以下の平方数については、ほぼ誰でも瞬時に認識できるだろうけど、数論では、もう少し広い範囲の(特に 400 以下の)平方数が常用される。例えば √(19 ± 6√) を処理したいとして、平方差 d を作る途中計算で 192 = 361 が必要だし、 d = 361 − 36⋅2 = 289 が求まった瞬間、その 289 が平方数 172 であること(図解)を認識できないと、話が前へ進まない。
その点、もし √(19 ± 6√) = √(19 ± 2√) と変形して「和が 19 で積が 18」の数を考えるなら、一瞬で u = 18, v = 1 が見つかる。このように、個々のケースでは、別のやり方の方が速いかも…
でも、このメモで記したアルゴリズムは汎用的で、どんな場合にも、二重根号簡約の可否を確実に判定(可能なら簡約)できる。しかも、このアルゴリズムは、他の場面でも活躍する。(続く)
![]()