循環小数

循環小数とは、小数点以下のある桁から先で同じ数字の列が無限に繰り返される小数のことである。繰り返される数字の列を循環節という。

循環小数の循環節は上線や下線 などを用いて示される。

循環小数は、基数と共通でない因数を含む分母を持つ整数の分数に対応する。例えば基数を 1=10 }} とした場合、1=sfrac, 1=sfrac などは循環小数にならないが、1=sfrac, 1=sfrac は循環小数となる。

また循環小数は、対応する分数の分母と基数が互いに素かどうかで分類でき、分母と基数が互いに素なものを純循環小数lang-en-short、それ以外のものを混合循環小数lang-en-shortと呼ぶHardy。また整数分数の分母が基数の素因数の積となる場合、それは循環小数とならず有限小数で表されるHardy。

ある循環小数の循環節が小数第一位から始まる場合、それは純循環小数となり、循環節が小数第二位以降で始まる場合、それは混合循環小数となる。混合循環小数は冒頭の循環していない有限小数部分とそれ以降の循環小数の二つに分離して考えることができる吉田。

1. 循環節
------

循環小数の循環節とは、小数部分の周期的な数列の中で最小の長さものである。例えば 1=sfrac は、数列 33 や数列 333 が連続して現れる小数と見なせるが、循環節は最小の数列 3 となる。

循環節の末尾は 0 になり得る。例えば、 2sup = 64 = 2.370370… の循環節は 370 となる。

循環節の先頭は小数第二位以降に現れ得る。例えば、十進法の 5 = 0.04629629… の循環節は、小数第三位からの 629 となる。

ある数が有限小数で表せるかは基数に依存し、既約分数の分母が基数の冪を割り切れる場合のみ、その数は有限小数として表され得る。したがって、ある既約分数が循環小数で表示されるかもまた基数に依存している。例えば 1 は、十進法では有限小数 0.2 で表されるが、二進法では循環小数 0.00110011… で表される。

また有限小数は、末尾の桁の後ろに 0 を無限に並ぶと見なせば、形式的に循環小数と見なせる。同様に、0.999... などの数列を用いて、有限小数を循環小数に書き換えることもできる。

2. 他の小数との比較
-----------

2.1. 有限小数
---------

循環小数の循環節が「0」もしくは「9」の場合は、どちらも実質的には有限小数となる。一般に、正の実数について、有限小数は二種類の循環小数で表せ、逆に、二通りに小数表示できるのはその一方が有限小数である場合に限る。

一つには、循環節は 0と考えることができる。もう一つは、有限小数の末尾を 1 減らし、それよりあとの位を全て「基数 − 1」にするというものである。

例えば、1 は 1.0000… と表せ、これは循環節が 0 の循環小数である。一方、末尾の 1 を 1 減らして 0 にし、それよりあとを全て 9 にした 0.999... に等しいとも考えられる。これは循環節が 9 の循環小数となる。

0.9999… = 1 は以下のように証明できる。

1=//x// = 0.9999…}}とする。同じく、十二進法の 1 は小数表示が 0.4 であるが、これは 0.4000… ということであり、循環節が 0 の循環小数である。一方、0.3BBB… とも考えられ、これは循環節が Bの循環小数となる。

同様に、二十進法の 1 も通常 0.4 と表すが、これは 0.4000… ということであり、循環節が 0 の循環小数である。一方、0.3JJJ… とも考えられ、これは循環節が Jの循環小数となる。

有理数が有限小数表示を持つのは、十進法表示なら、分母の素因数が 2, 5 のみであるときに限る。一般の N}}進法表示では、分母の素因数が N}} の素因数になっていることである。例えば、十八進法なら分母の素因数が 2, 3 のみであるときである。

2.2. 無理数
--------

循環小数によって表される数は、整数の分数としても表すことができ、有理数に含まれる。他方、有限でない非循環小数で表される数が存在し、これらは有理数に含まれない。実数のうち有理数に含まれない数を無理数という小平。無理数の例には2の平方根や円周率が挙げられる。前述の通り有限小数も循環小数で表すことができ、有理数はすべて循環小数で表せるが、反対に循環小数で表せる実数は有理数に限る小平。

3. 表記法
------

循環節を示す方法として以下の方法がしばしば用いられる：

循環節の先頭と末尾の数に点をつける
循環節全体に上線をつける
循環節全体に下線をつける
循環節全体を括弧でくくる規約として、循環節は小数部から始まるようにする。例えば 1=123.overline を 1=overline とは書かない。

4. 分数表現との関係
-----------

無限小数は、厳密には極限の概念を用いて定義される。特に、循環小数が表す数は無限等比級数、すなわち等比数列の和の極限と見なすことができ、ゆえに有理数である。例えば、

である。

一般には、冒頭の循環していない有限小数部分を分離し a}} とおき、循環部分の循環節の部分だけ取り出した小数部分を b}}、循環節の長さを n}} とすれば

となる。ところで、級数部分の総和は

であるから

となることが分かる。この方法をロバートソン  の方法という吉田。

やや厳密さに欠ける説明として、以下のようなものがある。

//x// = 2.423423423…とおく。両辺を1000倍すると、「1000倍すると小数点は3桁右に移動するから」

1000//x// = 2423.423423…辺々引くと「循環部分が打ち消しあって」

999//x// = 2421となる。よって、//x// = 269 が分かる。「 」の主張が正しいことが曖昧であるが、無限等比級数の値の計算と同等であることからこの計算は正当化される。

5. 循環節の長さ
---------

自然数の逆数の循環節の長さについて、ある長さとなるような最小の自然数を、循環節の長さを0から小さい順に並べると

1, 3, 11, 27, 101, 41, 7, 239, 73, 81, 451, 21649, 707, 53, 2629, 31, 17, 2071723, 19, 1111111111111111111, 3541, 43, 23, 11111111111111111111111, 511, 21401, 583, 243, 29, 3191, 211, 2791, 353, 67, 103, 71, 1919, 2028119, 909090909090909091, …

である。

5.1. 素数の逆数
----------

2 と 5以外の素数 p}} の逆数の循環節の長さは、//p// − 1}} の約数である。有限小数の循環節の長さを1とするなら、2 と 5もこの条件を満たす。

このことは、sfrac の循環節の長さが k}} であることと、1=10sup が同値であることから、初等的な群論より導かれる。

これがちょうど //p// − 1}} となるような素数 p}} は、小さな順より

7, 17, 19, 23, 29, 47, 59, 61, 97, …である。このような p}} に対する sfrac の循環節は、巡回数となる。 例えば、sfrac の循環節 142857 や、sfrac の循環節 0588235294117647 は巡回数である。素数を、分母とする数の循環節が奇数のものと偶数のものに分けると、sfrac が偶数、sfrac が奇数である。

5.2. 一般の有理数
-----------

N}}進法表示においてq桁の、レピュニット111...と999...の逆数の形の循環節の長さはq桁である。また有理数を整数倍したり、分母の数に対して基数に含まれる素因数を掛けた場合、循環節の長さが増すことはない。

5.3. N進法による差異
-------------

必ず循環小数になる例N進法表示において、sfrac の小数は必ず 0.1111… になる。九進法の場合 1 が 0.1111… になり、十進法の場合 1 が 0.1111… になる。

乗算表の最後に来る 2}} の逆数は、整数第二位に来る数が抜けて、桁の循環小数になる。例えば、六進法の場合「五五・四六一」なので 52}} の逆数は 1 = 0.01235… となり、4が抜けて循環節は5桁になる。九進法の場合「八八・七九一」なので 82}} の逆数は 1 = 0.01234568… となり、7が抜けて循環節は8桁になる。
複数桁で一の位が1の数を逆数にすると、循環小数になる。例えば、十二進法の場合 1 = 0.03A85232B… になり、十六進法の場合 1 = 0.07C1F… になる。循環節が短くなる例循環節の短さは、10 −1 ならびに 10//n//}} − 1 を素因数分解した時にどんな数が来るかによって決まる。

2−//n//}} では九進法  が、3−//n//}} では十進法が、5−//n//}} では六進法  が、それぞれ循環節が最も短くなる。
十八進法では、100 − 1 = HH = H×11、1000-1 = HHH = 73}}×H、10000 − 1 = HHHH = 52}}×D×H×11 となる。従って、5 は2乗までが4桁、7 は3乗までが3桁、D も4桁となり、12  までの素数のうち、B が十桁になる以外は全て循環節が4桁以下になる。

6. 循環節の求め方
----------

6.1. 定義に則った方法
-------------

最も素朴には、充分な桁数の小数表記を求め、その周期を見つける。同様に、有限小数の桁数も、素因数分解した時の大きい方の冪指数によって決まる。

ただし、同じ数字の並びが現れてもより長い周期の一部かもしれないので、循環節の長さの上限を事前に知っておかなければならず、それだけの桁数まで求めて初めて、循環節を求められる。上限としては#一般の有理数にて挙げたものがあるほか、「分母 − 1」が使える。

例1十進数の 1 の循環節は、素因数分解すると3456 = 27}}×33}} なので、7桁の後に3桁の循環節が来る。よって、1 = 0.0002893518… となる。一方で、十進数の 3456 は六進数の場合 24000 だが、素因数分解すると 24000 = 211}}×33}} となるので、分子が 34}}で、116}}桁 = 7桁の有限小数になる。よって、1 = 0.0000213 となる。例2十進数の 1 の循環節は、891 = 34}}×11 なので、3-4}} と 1 の循環節の長さを掛けたものになる。十進数では 3-4}} は 32}} 桁、1 は2桁の循環節なので、32}}×2 = 1810}}桁の循環小数になる。よって 1 = 0.001122334455667789… となる。一方で、十進数の 891 は十八進数の場合 2D9 で、素因数分解は 2D9 = 34}}×B となる。10 = 2×32}} なので、1 の循環節は 1010}}桁に対して、3−4}} は 4桁ではなく2桁に縮まり、2桁の後に 1010}}桁の循環節が来る。よって、1 = 0.0069ED1B834G… となる。

6.2. 筆算
-------

割り算を筆算で求めれば、余りに同じ数が現れた時点で、繰り返しに入ったことがわかる。例えば、十進法の 1 を小数表示する場合、次のような計算を行う。

0.142857 7 ) 1.0000007 3028 2014 6056 4035 50491

これ以降は同じ計算の繰り返しとなるので、1 = 0.142857 であることが分かる。この例では、1 を 7 で割った商と余りを計算することを繰り返している。

別のN進法でも、筆算によって循環小数が現れる。六進法の 1を筆算で小数表示する場合、次のような計算を行う。

0.01235 41 ) 1.0000041 150122 240203 3303251

これ以降は同じ計算の繰り返しとなるので、1 = 0.01235 であることが分かる。この例では、整数を 41 で割った商と余りを計算することを繰り返している。

被除数が1以外の場合も、同じように筆算で循環小数が現れる。割り切れる例も併載する。例として、被除数を 28}}、除数を 33}}とする。

十六進法の 100 ÷ 1B

9.7B425ED097B 1B ) 100.00000000000F3 D 0B D 1 301 29 706C 4036 A087 19017A 16015F100F3 D0BD 130129 7

被除数が除数より大きい例だが、整数部分を含めて「97B」が2回現れているので、これ以降は同じ計算の繰り返しとなり、100÷1B = 9.7B425ED09 となり、小数部分は9桁の「7B425ED09」が繰り返されることが分かる。この割り切れない「0.7B425ED09」を分数化すると、十六進法で D、十進法で 13 となる。

六進法の 1104 ÷ 43

13.252 43 ) 1104.00043 234213 21 013 0 4 003 43 130130 0

小数部分が3桁の「252」で終わって、1104÷43 = 13.252 となる。割り切れる小数「0.252」に相当する六進分数 252 は、十六進法で 68、十進法で 104 となり、既約分数にすると六進法で 21、十六進法で D、十進法で 13 となる。

一般に、//a// を //b// で割る筆算では、ある整数を //b// で割った商と余りを計算することを繰り返すが、//b// で割った余りは 0 から //b// − 1 の //b// 通りしかないため、余りが 0 になって計算が終わるのでなければ、必ずどこかで同じ余りが出現して同じ計算の繰り返しとなる。ゆえに、有理数を小数表示すると循環小数になる。この方法では循環節の長さの上限を事前に知っておく必要はないが、「分母 − 1」以下であることがこれによりわかる。

6.3. 素数の逆数の場合
-------------

基数に素因数として含まれない素数 //p// の逆数に対しては、循環節を //m// 桁とすると 10//m//}} － 1 は //p// で割り切れ、商が循環節となるので、//p// － 1 の約数それぞれに対し 10//m//}} － 1 が //p// で割り切れるかを試せばよい。//m// が小さい順に試せば、計算量を節約できる。

7. 注釈
-----

8. 出典
-----

9. 参考文献
-------

10. 関連項目
--------

0.999...

11. 外部リンク
---------