循環小数のつかいかた

 普段の話題と全く関係ないですが、今回はちょっとmime-TeXの練習を兼ねて、小飼弾氏出題の数学の問題を解いてみます。
 問題はこちら。

次の条件を双方とも満たす整数が存在することを証明しなさい。

  a. 1987を約数として持つ
  b. 十進法表記で、0と1だけ登場する

 この問題のキモは小数表現です。例えば1÷22を計算すると、0.045454545…のように循環する部分が出現します。
 これをうまく使えば割と簡単に解けます。以下解答。

\frac1{1987} を十進法の循環小数で表したものを 0.A_1A_2\cdots A_k\dot{B_1}B_2\cdots\dot{B_{n-1}} とする。

ここで、小数の非循環部分 A_1A_2\cdots A_k=\alpha 
循環部分 B_1B_2\cdots B_{n-1}=\beta と置くと

\frac1{1987}=\frac1{10^k}\left(\alpha+\frac\beta{10^n-1}\right)=\frac{\alpha\cdot10^n-\alpha+\beta}{10^k\cdot(10^n-1)}

よって

\begin{eqnarray*}1987(\alpha\cdot10^n-\alpha+\beta)&=&10^k(10^n-1)\\&=&10^k(10-1)(10^{n-1}+\cdots+10^2+10+1)\\&=&9\cdot10^k(10^{n-1}+\cdots+10^2+10+1)\end{eqnarray*}

19873 を約数に持たないので、 \alpha\cdot10^n-\alpha+\beta が 9 の倍数となる。

そこで、 \alpha\cdot10^n-\alpha+\beta=9m (m自然数)とすれば

1987m=10^k(10^{n-1}+\cdots+10^2+10+1)

となる。これは十進法で 01 しか出てこない数であり、かつ 1987 の倍数である。(証明終)

 というわけで、この問題は1987である必要はなく、どんな自然数を持ってきても同じことが言えます。
 本来は「有理数循環小数表現」をきちんと証明しないといけないんですが、まぁ一般に知られてる範囲だしいいかな、と。

 ちなみに、小飼弾氏のところのコメント欄に「1987×554101666331153=1101000011000001011」という手計算(?)による解答を出した人が居て驚きました。この場合は存在証明だから、これでも証明したことになりますね。

 小飼弾氏、こんなところで如何でしょうか?



(8/7追記

 こちらでoto-oto-oto氏が任意の自然数の場合を証明しておられます。上のやり方だと3の倍数の場合がうまく行かないんですね。
 mime-TeXで書き換えて載せておきます。

上の証明手順で、1987p に置き換えると

p(\alpha\cdot10^n-\alpha+\beta)=9\cdot10^k(10^{n-1}+\cdots+10^2+10+1) となる。

十進法において各桁の数の合計が 9 の倍数となる自然数は、それ自体 9 の倍数であるから
r=k+n-1 として

10^{8r}+10^{7r}+10^{6r}+10^{5r}+10^{4r}+10^{3r}+10^{2r}+10^r+1

9 の倍数である。これを 9N と置くと

\begin{eqnarray*}pN(\alpha\cdot10^n-\alpha+\beta)&=&9N\cdot10^k(10^{n-1}+\cdots+10^2+10+1)\\&=&10^k(10^{8r}+10^{7r}+\cdots+10^r+1)(10^{n-1}+\cdots+10^2+10+1)\end{eqnarray*}

これは 10^k(10^{n-1}+\cdots+10^2+10+1)9 個並べてできる自然数なので 10 のみから成り、かつ p の倍数である。(証明終)