「素数の秘密2」解答

「素数の秘密2」解答



◆東京都の大学生 M.Kさんからの解答。


「P が2,5でないとき 10(P-1) - 1 は P で割り切れる」
の証明ができないので、これを要請しておく。

まず、☆素数の秘密1の解答と同様に、m,a を定め 
2n,b,c のかわりに n,b とすると、

例えば
0.123456789456789…
では

m = 3
n = 6
a = 123
b = 456789

となる。

ここで
 1       a        b
--- =  ---- + -------------(*)
 P      10m    10m(10n-1) 

だから同様に
(10n-1) は P で割り切れる。

     (10n-1)
 h = --------
        P
とおくと(*)と比較して
a = 0
m = 0
b = h

とできる。

実際に割り算をすると

         0 . b_1 b_2  …  b_n …
       ________________________________
     P ) 1 . 0   0    …   0  …
             r_1
            --------------------
                  r_2


                        -----------
                              r_n

ここで r_n は 10n を P で割った余りだから 1 であり、
明らかにここから循環が始まる。
1 <= k < n の自然数 k について r_k != 1 である。

なぜなら そうでないと仮定すると n ではなく
k から 循環が始まってしまうからである。

また r_1 から r_(n-1) の間に同じものがあったとすると
その間が循環することになるから、この間に同じものはない。

r は余りであるから 1 から P-1 の値を取る
(0 では割り切れてしまう)

1 / P ではこのうちの n 個しか現れない。

この n 個に含まれないある x をとり
x / P を計算して r'_1,r'_2,  ... ,r'_n' が得られたとすると

 r'_1 = x        * 10 (mod P)    /* 3本線が書けないので = にする */
 r'_2 = r'_1     * 10 (mod P)

 r'_k = r'_(k-1) * 10 (mod P)

と

 r_1 = 1       * 10 (mod P)
 r_2 = r_1     * 10 (mod P)

 r_k = r_(k-1) * 10 (mod P)

より

 r'_1 = x * r_1 (mod P) が成り立ち

 r'_k = x * r_k (mod P) を仮定すると

 r'_(k+1) = x * r_k * 10 (mod P)
          = x * r_(k+1)  (mod P) が成り立つから

 r'_k = x * r_k (mod P)

このことから r'_n = x となり 1 <= k < n の k について

r'_k = x と仮定すると r'_k = x * r_k = x = x r_n (mod P)

1 <= r_k,r_n < P より r_k = r_n となり矛盾。

よって r'_n で初めて余りが x になるからここから循環が始まり
1 が x になったことを除いて r に成り立つことは r' にも成り立って
また r' にある数と r にある数は全て異なっている。

このことをまだ出てきてない数に繰り返すと 
n 個の数の組がいくつか得られる。

ここで最初の要請を思い出すと
P が2,5でないとき 10(P-1) - 1 は P で割り切れる。
r_(p-1) = 1 であることが分かり
r_k = 1 となるのは k が n の倍数である時だから
p-1 は n で割り切れて商を q とすると
数の組は q 個得られる。

以上より得られる循環のパターンは P-1 / n となる

感想
	秋休みの間ずっと数学から離れていた頭を起こして
	何とかここまでできた。
	どうしても最初の要請を証明できなかった。

#define MAX 100000
main() {
	long a[MAX];
	long i,j;
	long b = 1;
	for (i=2;i= i)
				b = b - i;
			}
			if (b!=1)
				printf("i = %d  false\n",i);
			b = 1;
		}
	}
}
	これで10万までは正しいことは分かったけど
	証明ができなくて残念だ


◆東京都の大学生 M.Kさんからの解答(訂正版)。

実は 
P が2,5でないとき 10(P-1)- 1 は P で割り切れる
を使う必要はなかったようだ。

>このことをまだ出てきてない数に繰り返すと n 個の数の組がいくつか得られる

P-1 を n で割ったときの余りを r とし
r !=0 と仮定すると
n 個の数の組を取った後にまだ r 個の数が残っていて
もう一度上のことを繰り返すとn 個の数の組が必ず取れるはずだが
r 個の数しかのこってないので矛盾。

よって
r = 0

>P-1 は n で割り切れて商を q とすると



 素数の秘密2へもどる

 数学の部屋へもどる