循環小数の研究



■      循環小数とは

循環小数の循環部分の数が無理数の証明に使えそうなので、ここでその分析をしておきます。

小数には有限小数と循環小数があります。あと、無理数となる小数もありますが、これの名称はまだ確定してないようなので、ここでは無理小数と呼んでおくことにします。有限小数とは 0.534 のように有限桁で表示可能なものです。循環小数とは 0.33333.... とか、0.16666のように循環部分が現れる小数のことです。0.5999....のように、9が無限に続く小数は 0.6のことなので有限小数とみなされます。

有限小数と循環小数は分数で表示することが可能です。分数化した数を p/n とします。循環部分の数をsとし、その繰り返しの部分の長さ(位数)をrとします。また、sの前にある循環しない部分があるならそれをtとし、その長さ(桁数)をuとします。すると、p/nは p/n=t/10^u+s/(10^r-1)/10^u となります。

具体例で説明すると、0.69393939....となる循環小数があるとします。繰り返しの部分は s=93です。位数は2,t=6, u=1 となっています。ですから、p/n = 6/10 + 93/99/10 となり、結果は 229/330 となります。

有限小数の時も、0.242 などでは s=0, r=0, t=242, u=3 なので、上記の式が成り立ちます。

循環部分sがあるとき s/(10^r-1) は 23/99、もしくは、353/999 などの形になります。分母は(10^r-1)なので、必ず9が並ぶ数となりますが、約分可能な場合も多々あります。また、9が並ぶ数を分母とする分数はsを繰り返し部分に持つ循環分数になります。



■      循環部分の位数

分数を小数化するとき、どうなるかを確認しておきます。1/n とすると、これを小数に変換した場合、循環小数になるときとならないときがあります。1/3のとき、1/3=0.3333.... なので、循環小数となり、循環部は3でひとつだけです。循環部の個数が重要なので、それを答えとする関数をjn(n)とします。すると、jn(3)=1 となります。循環部の個数を位数と呼ぶことにします。これは循環部の長さと考えることも出来ます。

具体例をさらに挙げてみると、1/4=0.25 で、循環していないので jn(4)=0 となります。1/5=0.2 で、これも有限小数ですから jn(5)=0 です。1/6=0.16666.... でjn(6)=1 となります。0.16666....の0.1は循環以前の部分ですが、これは数えません。1/7=0.1428571428.... で、jn(7)=6 です。

jn(n)の表を載せておきます。jn(1)=0, jn(2)=0 です。10個づつ区切って並べています。

0,0,1,0,0,1,6,0,1,0
2,1,6,6,1,0,16,1,18,0
6,2,22,1,0,6,3,6,28,1
15,0,2,16,6,1,3,18,6,0
5,6,21,2,1,22,46,....

この表から最初に判ることは、jn(n) < n ということです。これを証明しておきます。

1/n の循環部分の位数はわり算の法則により決まってきます。1/3の場合は、1が3より小さいので、ひとつ下の位から10を借りてきて10/3を実行します。すると、3余り1となるので、0.3が確定します。次に下の位から10を借りてきて10/3を実行します。すると、3余り1となるので、先の0.3と合計して0.33が確定します。次に余りの1を取り上げて、同じことを実行すると、また3余り1となります。これは同じ作業なので、これが無限に繰り返されて 0.33333... となります。循環部分は3のひとつだけとなります。

1/7の場合は、下の位からかりてきて10/7としてわり算を実行します。すると、答えは1、余り3となります。下の位から借りてきて30/7を実行すると、答えは4,余り2となります。同じように、20/7を実行すると、2余り6,60/7は8余り4,40/7は5余り5,50/7は7余り1,10/7は1余り3となります。ここで、1余り3は最初の答えと余りと同じなので、ここから同じ答えが繰り返されることになります。ここまでの位の数は6なので、jn(7)=6となります。

位数がいくつであるかは実際に計算してみないと判りませんが、計算の途中に現れる m/n の余りは (n-1)通りしかありません。この(n-1)通りという有限の可能性なので、(n-1)回わり算が実行される過程で必ず1回は前と同じ余りになります。そして、一回でも同じ余りになるなら、次のわり算の答えと余りは、以前のわり算と同じ答えにならざるを得ず、それ以降は必ず答えと余りが繰り返されることになります。それゆえ、繰り返される位数の最大値は(n-1) であることが証明できました。


さて、p/n となる分数についても同じことが言えます。2/11=0.181818... であり、3/7=0.4285714285... などです。この小数の循環部分の位数は1/nと同じです。このことを証明しておきます。

p/n=p*(1/n) となっています。そこで、1/nの循環部分の数をsとします。位数をrとします。循環部以前にある数をt/10^u とします。すると、1/n = t/10^u + s/(10^r-1)/10^u と表記できます。(10^r-1)は9が位数だけ並ぶことを意味します。10^uは循環部以前の数を分数化したときに出てくる10の倍数です。たとえば、n=6のとき、r=1, u=1なので、t=1/10、s=6となるので、1/6 = 1/10 + 6/(10-1)/10 ということです。n=42のときは、t=0/10となり、s=238095なので、1/42 = 0/10 + s/(10^6-1)/10 となります。

ここでp*(1/n)を考えます。p*(1/n)=t*p/10^u + s*p/(10^r-1)/10^u という形になります。t*p/10^u は必ず有限小数です。s*p=(10^r-1)*a+bと書くことが出来るので、s*p/(10^r-1)/10^u = (10^r-1)*a/(10^r-1)/10^u + b/(10^r-1)/10^u となります。(10^r-1)*a/(10^r-1)/10^u は約分できるので a/10^u となり、有限小数となります。b/(10^r-1)/10^u は(10^r-1)が999....と並ぶ数なので必ず位数rの循環小数となります。有限小数と位数rの循環小数を加えた場合、必ず位数rの循環小数となるので、p/nは位数rの循環小数となります。1/nの位数もrなので、一致することが証明できました。




■      1/nと位数の関係

1/nと位数の関係は綺麗な式で現わされるものではなく、今のところ実際に計算してみないと判りませんが、nが素因数分解できる場合は次のような法則があります。

nを素因数分解して出来た数をs1,s2,s3...で表すことにします。すると、n=s1^a*s2^b*s3^c... と並ぶことになります。この場合、1/nの位数は、jn(s1^a)、jn(s2^b)、jn(s3^c)、. . . の最小公倍数となります。また、同じ素因数同士のかけ算の時は jn(s1^2)=jn(s1)*s1 が成り立ちます。ただし、例外がひとつあり、1/3*1/3=1/9 ですが、jn(9)=jn(3)*3 ではありません。おそらく、3が9の素因数だからでしょうが、理由の説明は容易ではありません。7の場合は jn(49)=jn(7)*7 が成り立っていますので、なぜ3だけなのかは不思議な気がします。とにかく、ここは例外として、その他の同一素因数同士の場合は上記の式が成り立ちます。これで、素数である s1, s2, s3, . . .  の位数が判ればすべての数の位数を計算できることになります。

たとえば、1/7の位数は6です。1/19の位数は18です。6と18の最小公倍数は18なので、1/7/19の位数は18となります。1/7/17の場合は、1/7の位数は6,1/17の位数は16ですから、6と16の最小公倍数は48です。ゆえに、1/7/17の位数は48となります。

同じ素因数同士のかけ算の場合は異なる法則の中にあります。たとえば、(1/7) * (1/7) の場合、どちらも jn(7)=6 なので、最小公倍数は6ですが、素因数が同じ場合は jn(s^2)=jn(s)*s という式が適用されます。つまり、s=7 なので、jn(49)=jn(7)*7 つまり42となります。s=3のときは例外であることはすでに述べています。s=9 なら、jn(81)=jn(9)*9 となります。jn(s^3)=jn(s^2)*s です。jn(s^2)=jn(s)*s なので、jn(s^3)=jn(s)*s^2 ということです。

(1/21)*(1/63) の場合は、jn(21)とjn(63)の最小公倍数を計算してはなりません。21と63には共通因数があるので、まず 21*63=1323 を実行して 1/1323=1/3^3/7^2 として、jn(3^3) と jn(7^2) の共通因数を計算します。jn(3^3)=3、jn(7^2)=42 なので、最小公倍数は42となります。実際に計算してみると 1/1323の位数は42となっています。

この法則により jn(n)=n-1 となるのはnが素数の時だけであることが判ります。なぜなら、nが素数でなければ、素因数を複数持つことになり、その素因数を s1^a, s2^b, s3^c, . . . とすると、jn(s1^a)の持つことの出来る最大の位数は(s1^a-1)、jn(s2^b)の持てる最大位数が(s2^b-1)、以下同様なので、(s1^a-1), (s2^b-1), ... の最小公倍数は必ず (n-1) = (s1^a*s2^b*s3^c*...-1) よりも小さくなるからです。

すべての素数でjn(n)=n-1が成り立つわけではありません。jn(11)=2、jn(13)=6 となっていて、n-1とならない素数はたくさんあります。n-1 となるのは、7, 17, 19, 23, 29, 47, 59, 61, 97 109 ,131, 149 ,167 ,... と、こちらもたくさんあります。jn(n)=n-1 となる素数は次ページの証明で使うので、これに N素数 と名付けておきます。

このN素数の並び方に法則があるようには見えませんが、n→∞において、jn(n)=n-1となる素数は無限に存在しています。その理由は、循環部分計算の過程で現れるm/nのわり算の余りの可能性は(n-1)通りあります。どの余りになるかはケースバイケースですが、最後まで同じ余りが現れないとき jn(n)=n-1 となります。同じ余りが最後まで現れないことは常にあり得るので、nがどんなに大きくなってもjn(n)=n-1となる素数は存在します。

nが増加する過程で、N素数が常に現れるので、1/nの位数は徐々に大きくなりますが、N素数の位数だけが大きくなるのではありません。普通の素数もそれなりに大きくなりますし、一般のnも大きくなればなるほど素因数の種類も増えるし、それらの素因数の位数の最小公倍数は、「最小」とは言え、nが大きいので、その位数も大きくなります。結果的に、nの増加に伴い、N素数を筆頭に、すべてのnの位数は増加傾向にあるので、nが無限になると、1/n の位数も無限大になります。

この命題を次ページの証明で使うことが出来ると思うのですが、やや疑問点もないわけではないので、次のような別の証明を付け加えておきます。



■      lim_[n→∞] 1/n で位数が無限大になることの証明


√2が無理数であることはすでに証明されています。そこで、これを使って lim_[n→∞] 1/n で位数が無限大になる ことの証明をすることにします。

連分数表示にすると √2=1+1/(2+1/(2+1/(2+.... となります。これだと分かり難いので、数列で考えることにします。a(0)=2+1/2, a(1)=2+1/a(0), a(2)=2+1/a(1), a(3)=2+1/a(2), . . . となる数列 a(r)を考えます。a(0)=2.5, a(1)=2.4, a(2)=2.416666..., a(3)=2.41379..., a(4)=2.4142857..., . . . と続き、最後だけは 1+1/a(r) とします。すると 1.41421356... となります。

分数表示にすると、a(0)=5/2, a(1)=12/5, a(2)=29/12, a(3)=70/29, . . .  となります。a(r)=p(r)/n(r) とすると、a(r)=(2*p(r-1)+n(r-1))/p(r-1) となっています。ですから、p(r)=2*p(r-1)+n(r-1),  n(r)=p(r-1) という関係にあります。p(r), n(r)は必ずプラスの数です。また、分子・分母は因数を共有することはないので、約分することは出来ず、必ず p(r)>p(r-1), n(r)>n(r-1) が成り立ちます。

√2 = lim_[r→∞]p(r)/n(r) なので、必ず定数となります。p(r)とn(r)は必ず無限大になります。このときの位数は常にn(r)が決めることになりますが、左辺の√2は無理数なので右辺のn(r)の位数が有限に収束することはありません。つまり、必ず無限大になります。ゆえに、1/n のnが無限大のとき、位数も無限大になることが証明されました。













■      循環部分の位数(修正と続き)

循環部分以外の所も証明に関係してくるので、説明を変更することにしました。1/6=0.16666.... の場合、循環部は jn(6)=1 ですが、0.1という循環以前の部分があります。この桁数をun(r)とします。

たとえば、1/24の場合、0.041666... なので、6666...以前の部分は0.041です。ゆえに、un(3)となります。

1/nの循環部分の数をsとします。位数をrとします。循環部以前にある数をt/10^u とすると、un(n)=uであり、1/n = t/10^u + s/(10^r-1)/10^u と表記できます。たとえば、n=24のとき、r=1, un(24)=3なので、t=41/10^3、s=6となるので、1/24 = 41/1000 + 6/(10-1)/1000 ということです。n=42のときは、un(42)=1 で、t=0/10^1 となり、s=238095なので、1/42 = 0/10^1 + s/(10-1)/10^1 となります。n=8のとき、un(8)=3 で、s=0 となっています。循環小数の公式に代入すると 1/8 = 125/10^3 + s/(10^0-1)/10^3 となり、s/(10^0-1) という計算不能部分が生じますが、これを0と理解するとこうの公式は成り立ちます。これが嫌いな人は、循環しない小数の時は 1/n=t/10^u と理解することになります。

さて、このun(n)がどうなるかを分析します。un(1)=0, un(2)=1, un(3)=0, un(4)=2 となります。この続きを調べて表にすると、以下のようになります。一列目が1から10,二列目が11から20です。

0,1,0,2,1,1,0,3,0,1,
0,2,0,1,1,4,0,1,0,2,
0,1,0,3,2,1,0,2,0,1,
0,5,0,1,1,2,0,1,1,3,
0,1,0,2,1,1,0,4,0,2,
. . . . .

この表からいくつかの綺麗な法則が見えてきます。まず気が付くのは、nが2,5以外の素数の時un(n)=0 となっています。2^r と 5^r は un(n)=r です。あとは結構単純な法則で決まってきます。

nが2,5以外の素数だけを素因数に持つ場合は un(n)=0 となっています。un(21)=0 であり、un(49)=0 です。2,5を素因数に持つ場合は、それ以外の素因数はun(n)に影響を与えないので無視することが出来、2^r1と5^r2とすると、r1とr2を比較して、どちらか大きい方が un(n) の答えとなります。たとえば、n=200=2^3*5^2 ですが、r1=3, r2=2 です。ゆえに un(200)=3 となります。n=500=2^2*5^3 ですが、r2のほうが大きいので un(500)=3 となります。

これによりすべての1/nにおいて、循環部以前の位の長さun(n)が計算できるようになります。

p/n のときどうなるかと言うと、pは小数点以上の部分に影響を与えますが、小数点以下の位の数には影響を与えません。それゆえ un(n)に関しては、pを無視して計算することが出来ます。














■      履歴 

09/12/01    新規UP
09/12/21    一部、基本的誤解があったので、全面的に改定

表紙に戻る  前のページへ  次のページへ