唐突にひらめいた

 数日前の記事ですが、http://blog.mf-davinci.com/mori_log/archives/2008/01/post_1613.phpの最後に400000001が素数かどうか、という記述がありました。記事の中では答えは示されていないのですが、計算機を使わずに考えた方が面白い、と書かれていたので計算機を使わずに暇になったら考えよう、と思っていました。

 しかし、中学入試の予想問題を見ているときに、急に答えを思いついてしまい、それを確かめたくて計算してしまいました。

 素数判定法と呼ばれるものはいくつかありますが、判定法以外の数学の知識を利用して素数かどうかが判断可能な場合があります。今回は次の式を利用しました。

x^2-y^2=(x+y)(x-y)

 算数の問題を見ていて、「そういえば400000000だったら平方数だから素数じゃないのに」と考えた自分の思考から、上の式を用いて計算できるのでは、というひらめきに至りました。

 最も大きい桁が1,4,9でその後ろに0が偶数個並ぶ数は全て平方数です。たとえば上の400000000は20000の2乗になります。つまり、

400000000=20000 \times 20000

は成り立つのですが、提示された数字はそれに1を加えた数でした。20000に1を加えて2乗すると、

20001 \times 20001=400040001

と、目的の400000001を大きく上回る数字になってしまいます。その差は40000。

 ……40000?

 実はこの数字、ある性質を満たしています。もうおわかりでしょう。先に示した、4で始まり偶数個の0が続く数なのです。したがって40000は平方数です。

40000=200 \times 200

 これまでの流れを整理すると、次のようになります。

400040001=20001 \times 20001
400000001=400040001-40000
40000=200 \times 200

 これらに、最初に提示した式を適用します。

\begin{array}{ll} \\ 400000001 & =400040001-40000 \\ & =20001^2-200^2 \\ & =(20001+200)(20001-200) \\ & =20201 \times 19801 \\ \end{array}

 したがって、400000001は素数ではないことが証明されました。

 意外と計算機に頼らなくてもなんとかなるものですね。