tsujimotterのノートブック

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

(自由研究)平方根計算の裏技(?)を解剖する

Twitterで「平方根を計算する裏技」に関するこんなツイートが回ってきました:

元はアラビア語のツイートなのですが、これが日本語に翻訳されて回ってくるというのが最近のTwitterの嬉しいところですね。


元のツイートでは動画で説明されていますが、ここで文章でも解説してみましょう。



やりたいことは

 \sqrt{25}

のような平方根の計算です。

Step 1: まず、 25 の各桁の総和を計算します:

 2 + 5 = 7

Step 2: 今計算したいのは、平方根(つまり2乗根)なので、得られた数から  2 を引きます:

 7 - 2 = 5

すると、得られた  5 が、なんと  \sqrt{25} の答えに一致します!(なんだってー!?)


まとめると図の通りです:


ほかにも成り立つ例を紹介しましょう。


実は平方根だけではなく、3乗根や、一般に  k 乗根でも成り立つそうです:



いわば「平方根計算の裏技(?)」ですね!

この方法に基づいて、一般に  d 桁の数  n k 乗根を計算したいとします:

 \sqrt[k]{n}


Step 1: まず、 n = (a_{d-1}a_{d-2}\cdots a_0)_{10} の各桁の総和を計算します:

 a_{d-1} + a_{d-2} + \cdots + a_0

Step 2: 今計算したいのは、 k 乗根なので、得られた数から  k を引きます:

  a_{d-1} + a_{d-2} + \cdots + a_0 - k

すると、得られた数が、一般に  \sqrt[k]{n} の答えに一致します!


そんなわけあるかい!!



実際、 \sqrt{121} = 11 の場合、各桁の総和は

 1 + 2 + 1 = 4

であり、ここから  2 を引くと

 4 - 2 = 2

となり、答えの  11 には一致しないですね。


つまり、この方法は一般の平方根を計算する裏技ではなかったというわけです。

うまく行く例だけ見せられて、一瞬騙されそうでしたが、しっかり確認しないといけないですね。


裏技(?)を解剖する

というわけで、先ほどの平方根計算の裏技(?)は一般には成り立たないということでした。

一般に成り立たないのであれば、逆にどういう条件であれば成り立つのか が気になってきます。


そこで、一般的な場合を想定して、今回の裏技を定式化して見たいと思います。


まず、 d 桁の数  n について、その平方根

 \sqrt[k]{n} = m

を計算したいと思います。

 n を10進法で表すと  n = (a_{d-1} a_{d-2} \cdots a_0)_{10} と表せますが、これは総和記号を用いて

 \displaystyle n = \sum_{i=0}^{d-1} a_i 10^i

と表せます。

 n = m^k より

 \displaystyle \sum_{i=0}^{d-1} a_i 10^i  = m^k \;\;\;\;\;\;\;\; (1)

が成り立ちます。

次に、裏技によれば  n の各桁の総和から、 k 乗根の  k を引いたものが、 \sqrt[k]{n} の答えになるのでした。したがって

 \displaystyle \sum_{i=0}^{d-1} a_i  = m + k \;\;\;\;\;\;\;\; (2)

が求める条件となります。


つまり、 (1), (2) が同時に成り立つ条件、すなわち連立方程式

 \begin{cases} \displaystyle \sum_{i=0}^{d-1} a_i 10^i  = m^k  \;\;\;\;\;\;\;\; (1) \\
\displaystyle \sum_{i=0}^{d-1} a_i  = m + k \;\;\;\;\;\;\;\; (2) \end{cases}

を満たすものを見つければよいわけですね。


k = 2 のとき

一般的な場合を考える前に、 k = 2 の場合に限定して考えましょう。すなわち

 \sqrt{25} = 5, \;\; \sqrt{64} = 8, \;\; \sqrt{289} = 17

の他の例を考えたいというわけです。


先の連立方程式を  k = 2 の場合で考えると

 \begin{cases} \displaystyle \sum_{i=0}^{d-1} a_i 10^i  = m^2  \;\;\;\;\;\;\;\; (1') \\
\displaystyle \sum_{i=0}^{d-1} a_i  = m + 2 \;\;\;\;\;\;\;\; (2') \end{cases}

となります。

(i) mod 3の合同式

 (1') - (2') を計算すると、左辺は

 \displaystyle (\text{左辺}) = \sum_{i=0}^{d-1} (10^i - 1)a_i

となりますが、 10^i - 1 = \underbrace{99\cdots 99}_{i\, \text{digits}} より、 10^i - 1 9 で割り切れます。

したがって

 \displaystyle (\text{左辺}) = 9\left(\sum_{i=0}^{d-1} \frac{10^i - 1}{9}\, a_i\right)

が得られます。

 (1') - (2') の右辺の方は

 \displaystyle (\text{右辺}) = m^2 - m - 2 = (m + 1)(m - 2)

となります。


したがって、 (1') - (2') より

 \displaystyle 9\left(\sum_{i=0}^{d-1} \frac{10^i - 1}{9}\, a_i\right) = (m + 1)(m - 2)  \;\;\;\;\;\;\;\; (3')

が得られます。


ここで左辺に  9 = 3^2 があるので、右辺の因子  m + 1, \; m - 2 がどのように  3 で割り切れるのかが気になります。

実際

 m + 1 \equiv m - 2 \equiv 0 \pmod{3}

なので、 m + 1 m - 2 のどちらも  3 で割り切れることが分かります。

よって、

 m \equiv 2 \pmod{3} \;\;\;\;\;\;\;\; (4')

が得られました。



つまり、 (1'), (2') の連立方程式が成り立つならば、 m \equiv 2 \pmod{3} が成り立つ、という 必要条件 が得られたということになります。



実際、うまくいく例

 \sqrt{25} = 5, \;\; \sqrt{64} = 8, \;\; \sqrt{289} = 17

では、それぞれ

 (n, m) = (25, 5), \; (64, 8), \; (289, 17)

ですが、いずれも  m \equiv 2 \pmod{3} は成り立っていますね。



しかしながら、 m \equiv 2 \pmod{3}残念ながら十分条件ではありません

実際、 \sqrt{121} = 11 のケースにおいても、 m = 11 \equiv 2 \pmod{3} は成り立っていますが、これはうまくいかない例でした。


(ii) 不等式の評価

必要十分条件を議論するのは一旦諦めて、解がどれぐらいあるのかを調べるために不等式を使った評価をしたいと思います。

 (1') から、 m^2 を次のように下から評価できます:

 \displaystyle m^2 = \sum_{i=0}^{d-1} a_i 10^i \geq 10^{d-1}

(ここで、 n d 桁の数なので、 a_{d-1} \geq 1 であることを用いています。)


一方、式  (2') からは、 m を上から評価できます:

 \displaystyle m < m + 2 = \sum_{i=0}^{d-1} a_i \leq  \sum_{i=0}^{d-1} 9 = 9d

 n の10進法の各桁が  9 以下であることを用いています。)


以上から

 10^{d - 1} \leq m^2 < (9d)^2

なる不等式が得られます。

ここから、解が存在するためには

 10^{d - 1} < (9d)^2 \;\;\;\;\;\;\;\; (5')

が成り立つ必要があります。

左辺は  d についての指数関数で、右辺は  d についての多項式関数なので、十分大きい  d においては成り立ちませんね。

つまり、 n の桁数  d には上限がある というわけです。



ここで両方の平方根をとった  10^{\frac{d - 1}{2}}, \;\; 9d についてのグラフを書いてみると、次のようになります:

 d = 5 の付近で大小関係がひっくり返っていそうですね。


実際、 d = 4 のときは

 (9 \cdot 4)^2 - 10^{4-1} = 36^2 - 10^3 = 1296 - 1000 > 0

であり、不等式  (5') は成り立っています。(すなわち、桁数  d = 4 の解は存在する可能性があります。)

 d = 5 のときは

 (9 \cdot 5)^2 - 10^{5-1} = 45^2 - 10^4 = 2025 - 10000 < 0

なので、不等式  (5') は成り立ちません!(すなわち、桁数  d = 5 の解は存在しません!)


以上から、平方根  \sqrt{n} の例で解が存在するためには、 n の桁数  d d\leq 4 である必要があるということがわかりました。


実際、 n が4桁以下で全探索すると、すべての解が次のように得られました:

 (n, m) = (4, 2), \; (25, 5), \; (64, 8), \; (196, 14), \; (289, 17)


平方根に直すと

 \sqrt{4} = 2, \;\; \sqrt{25} = 5, \;\; \sqrt{64} = 8, \;\; \sqrt{196} = 14, \;\; \sqrt{289} = 17

となります。

実は、成り立つのはたったこれだけだった というわけです! 面白いですね!


一般の k(k乗根)の場合

それでは、一般の  k 乗根の場合で考えましょう。

すなわち、連立方程式

 \begin{cases} \displaystyle \sum_{i=0}^{d-1} a_i 10^i  = m^k  \;\;\;\;\;\;\;\; (1) \\
\displaystyle \sum_{i=0}^{d-1} a_i  = m + k \;\;\;\;\;\;\;\; (2) \end{cases}

の解を議論しましょう。


平方根の場合とほとんど同じような議論が「途中まで」展開できます。


(i) mod 3での合同式

 (1) - (2) を計算すると、全く同様に

 \displaystyle 9\left(\sum_{i=0}^{d-1} \frac{10^i - 1}{9}\,a_i \right)  = m^k - m - k

が成り立ちます。


左辺に  9 が出ていますので、右辺の因子がどのように  3 を割るのかを議論することで、 m についての条件が出てきそうです。

しかしながら、右辺の式  m^k - m - k が複雑なので、平方根のようにうまく因数分解して議論できません。


何かできそうな気がしますが、こちらの方針は一旦あきらめます。

 m \equiv 0, 1, 2 \pmod{3} で場合分けすると、もう少し条件を絞れそうです。

 m \equiv 0 \pmod{3} のとき:

 m^k - m - k \equiv -k \equiv 0 \pmod{3}

より  k \equiv 0 \pmod{3} が得られます。

 m \equiv 1 \pmod{3} のとき:

 m^k - m - k \equiv 1 - 1 - k \equiv -k \equiv 0 \pmod{3}

より  k \equiv 0 \pmod{3} が得られます。

 m \equiv 2 \equiv -1 \pmod{3} のとき:

 m^k - m - k \equiv (-1)^k + 1 - k \equiv 0 \pmod{3}

が得られますので、 k の偶奇でさらに場合分けをします。

 k \equiv 0 \pmod{2} のとき、 1 + 1 - k \equiv 0 \pmod{3} より  k \equiv 2 \pmod{3}。すなわち、 k \equiv 2 \pmod{6}

 k \equiv 1 \pmod{2} のとき、 -1 + 1 - k \equiv 0 \pmod{3} より  k \equiv 0 \pmod{3}。すなわち、 k \equiv 3 \pmod{6}



以上をまとめると次のようになります:

  •  m \equiv 0 \pmod{3} ならば  k \equiv 0 \pmod{3}
  •  m \equiv 1 \pmod{3} ならば  k \equiv 0 \pmod{3}
  •  m \equiv 2 \pmod{3} ならば  k \equiv 2, 3 \pmod{6}


つまり、いずれの場合でも  k \equiv 0, 2, 3 \pmod{6} となるので、

 k \not\equiv 1, 4, 5 \pmod{6}

であることが示されました。このような  k 乗根の場合、解は存在しないということになります。



(ii) 不等式の評価

 (1) から、 m^k を下から評価できます:

 \displaystyle m^k = \sum_{i=0}^{d-1} a_i 10^i \geq 10^{d-1}


一方、式  (2) からは、 m を上から評価できます:

 \displaystyle m < m + k = \sum_{i=0}^{d-1} a_i \leq  \sum_{i=0}^{d-1} 9 = 9d


以上から

 10^{d - 1} \leq m^k < (9d)^k

なる不等式が得られます。

ここから、解が存在するためには

 10^{d - 1} < (9d)^k \;\;\;\;\;\;\;\; (5)

が成り立つ必要があります。

左辺は  d についての指数関数で、右辺は  d についての多項式関数なので、十分大きい  d においては成り立ちませんね。


平方根のときと同様に、 k を固定すると) n の桁数  d には上限がある というわけですね。


具体的な条件を求めるためには、不等式  (5) d について解く必要があり、それはだいぶ面倒そうです。



不等式  (5) を満たす条件で、解を全探索することは可能です。

最後に  k \leq 20 について全列挙してみたいと思います:

k = 2 の場合:

  \begin{align*}
&\sqrt[2]{4} = 2, \;\; \sqrt[2]{25} = 5, \;\; \sqrt[2]{64} = 8, \\ &\sqrt[2]{196} = 14, \;\; \sqrt[2]{289} = 17
\end{align*}

k = 3 の場合:

  \begin{align*}
&\sqrt[3]{125} = 5, \;\;
\sqrt[3]{216} = 6, \;\;
\sqrt[3]{343} = 7, \\
&\sqrt[3]{2744} = 14, \;\;
\sqrt[3]{3375} = 15, \;\;
\sqrt[3]{4096} = 16 
\end{align*}

k = 4 の場合:

 解なし

k = 5 の場合:

 解なし

k = 6 の場合:

  \begin{align*}
&\sqrt[6]{3518743761} = 39, \\
\end{align*}

k = 7 の場合:

 解なし

k = 8 の場合:

 解なし

k = 9 の場合:

  \begin{align*}
\sqrt[9]{13537086546263552} = 62, \;\; \sqrt[9]{15633814156853823} = 63 \end{align*}

k = 10 の場合:

 解なし

k = 11 の場合:

 解なし

k = 12 の場合:

  \begin{align*}
&\sqrt[12]{50714860157241037295616} = 78, \\
&\sqrt[12]{188031682201497672618081} = 87, \\
&\sqrt[12]{4817904819828488880132096} = 114, \\
&\sqrt[12]{13214788658781797667045376} = 124, \\
\end{align*}

k = 13 の場合:

 解なし

k = 14 の場合:

 解なし

k = 15 の場合:

  \begin{align*}
&\sqrt[15]{45587487211290846582931833112449} = 129, \\
&\sqrt[15]{112410921330388974282595778471993} = 137, \\
\end{align*}

k = 16 の場合:

 解なし

k = 17 の場合:

 解なし

k = 18 の場合:

  \begin{align*}
&\sqrt[18]{2110793531984003898618755091514405903089} = 153, \\
&\sqrt[18]{2373411132289445384862704813118578753536} = 154, \\
\end{align*}

k = 19 の場合:

 解なし

k = 20 の場合:

  \begin{align*}
&\sqrt[20]{1140408956767181228576535097649472521057672401} = 179, \\
&\sqrt[20]{1590112163465011569715575123373973989806309376} = 182, \\
&\sqrt[20]{58766506252338902465929444319996444416987365376} = 218, \\
\end{align*}



たしかに、合同式で結論づけたように  k \equiv 1, 4, 5 \pmod{6} の解はないことが分かりますね。赤字の部分が該当の  k です。



なかなか面白いテーマでしたが、最後は計算機に頼ってしまったので、少し消化不良です。もうちょっと進められそうな気がするのですが・・・。

何かわかった人がいたら、ぜひお知らせください〜。

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



追記:合同式の計算をより深く

「(i) mod 3の合同式」の項では、等式

 9\big( \; \cdots \; \big) = m^k - m - k

から、両辺が  9 で割り切れることを使って、mod 3での合同式 を考えました。

その結果として、

 k \equiv 0, 2, 3 \pmod{3}

という必要条件が得られました。


もっと分析を進めるためには、mod 9 でのより詳細な分析が必要です。


これについては記事公開当初は諦めていたのですが、意外と計算できてしまったので、追記として紹介したいと思います。


今考えたいのは

 m^k - m - k \equiv 0 \pmod{9}

の解  (m, k) です。

ここで問題になるのは  m^k です。これを適切に処理する必要があります。


mod 9、すなわち  \mathbb{Z}/9\mathbb{Z} で考えているので、 m 9 と互いに素か否かで話が変わってきます。そこで

  • (i)  m が3で割り切れるとき
  • (ii)  m が3で割り切れないとき

の2通りで場合分けをします。

(i)  m が3で割り切れるとき( m \equiv 0, 3, 6 \pmod{9}

 m \equiv 0 \pmod{3} なので、 k \geq 2 のとき  m^k \equiv 0 \pmod{9} が成り立ちます。

そこで、今考えている合同式は

 - m - k \equiv 0 \pmod{9}

より、 k \equiv -m \pmod{9} が成り立ちます。

すなわち

  •  m \equiv 0 \pmod{9} のとき、 k \equiv 0 \pmod{9}
  •  m \equiv 3 \pmod{9} のとき、 k \equiv -3 \equiv 6 \pmod{9}
  •  m \equiv 6 \pmod{9} のとき、 k \equiv -6 \equiv 3 \pmod{9}

が解を持つ必要条件となります。

(ii)  m が3で割り切れないとき( m \equiv 1, 2, 4, 5, 7, 8 \pmod{9}

この場合は、 m \in (\mathbb{Z}/9\mathbb{Z})^\times となりますので、 \mod{9} でのオイラーの定理により

 m^6 \equiv 1 \pmod{9}

が成り立ちます。すなわち、 m^k k\pmod{6}(周期  6)で値が定まることになります。


よって、 m\pmod{9} k\pmod{6} をすべて検討すれば  m^k - m \bmod{9} が決定できます。

ところが今考えたい合同式は、 m^k - m - k \equiv 0 \pmod{9} であり、 m k が混ざり合うことになります。したがって、 k の方をmod 18で考えればよいです。


以上の考察から、 m\pmod{9} k\pmod{18} をすべて列挙して  m^k - m - k \pmod{9} の表を計算します。これが  \equiv 0 になるのであれば解がある可能性があります。逆に、これが  \equiv 0 にならないのであれば、解は絶対に持たないということになります。


以上を踏まえて計算した、 m^k - m - k \pmod{9} の表が次のとおりです:


 k \equiv 1, 4, 5 \pmod{6} の場合は、「(i) mod 3の合同式」の項で議論したように解はありません(表をグレーにしています)。

また、オレンジ色の部分は  m^k - m - k \equiv 0 \pmod{9} が成り立つ部分です。


興味深いのは、紫色の部分です。

 k \equiv 8, \; 14 \pmod{18}

のところは、どのような  m に対しても  m^k - m - k \equiv 0\pmod{9} が成り立ちません。すなわち、解がないような  k 乗根ということになります。

確かに、上で計算した例では、 k = 8, 14 のときはちょうど解がなかったわけですが、まさにその謎が解決された形になりました!

大変面白いですね!!


関連記事

今回のルートの計算方法(?)には元ネタがありました。こちらの記事もどうぞ。
tsujimotter.hatenablog.com