1割る3が割り切れる

0.33333・・・割り切れないよ、書ききれないよ!

はじめに

高校1年の数学の授業で有理数無理数の概念を学習します。 そのうち、円周率パイや平方根ルートが無理数と教えられます。 円周率など、「3.14159・・・」といつまでも数字がつづく終わりがない数字と理解しているでしょう。

分数を小数化したとき、割り切れない場合、循環小数となります。 循環小数無理数と同じく、いつまでも数字が続いていきます。 にもかかわらず、有理数でひとくくりなんです。 なぜでしょう? ここでは、それをネタにお話しします。

柱脚:ここでの割り切れるとは、小数が循環せずに書ききれる事を意味します。

1は3で割り切れない

さて、分数も同じように数字が終わらない場合があります。 三分の一なら、「0.33333・・・」と同じように3が延々と続く数字です。 しかし、これは有理数として教えられます。

1割る10(つまり十分の一)は、0.1となり割り切れます。 1割る3(つまり三分の一)は、0.3333...となり割り切れません。 あたりまえ? いえいえ、当たり前にもいろいろ面白いことがあるのです。

結論から言うと、割り切れるとか割り切れないとかは、私たちの都合で勝手に区別しているだけなのです。 もしかしたらこの宇宙には、1が3で割り切れると考える世界があるかもしれないのです。

十進数と三進数

高校で有理数無理数の概念と同じ頃に、10進数という概念も学習します。

私たちは、一桁を0から9までの十種類の文字で表します。 十を示すには桁上がりを利用して、2つの文字を使って10と表します。 十で桁が上がるので、十進数といわれるのでしょう。 手の指は10本あるしね。

    0,1,2,3,4,5,6,7,8,9 -> 桁上がり 10

さあ、数学の面白いところです。 十進数があるんだったら、三進数もあっていいんじゃね? イエス!数学的にはアリです。 十進数と同じように考えればいいんです。

一桁を0から2までの三種類の文字で表します。 三を示すには桁上がりを利用して2つの文字を使って10と表します。 三で桁が上がるので、三進数ですね。 きっと、高度に発達した三本触手の宇宙人の世界でしょう。

    0,1,2 -> 桁上がり 10,11,12 -> 桁上がり 20

まだ続きますよ~。

1が3で割り切れる世界

私たち十進数の世界の数は、次の様に書くことができます。

  100     1の10倍の10倍
   10     1の10倍
    1     1
    0.1   1の10分の1
    0.01  1の10分の1の10分の1
    0.001 1の10分の1の10分の1の10分の1

同様に、三本触覚宇宙人の三進数の世界の数のは次の様に書けます。

  100     1の3倍の3倍
   10     1の3倍
    1     1
    0.1   1の3分の1
    0.01  1の3分の1の3分の1
    0.001 1の3分の1の3分の1の3分の1

わかりますか? 数学では、考え方をとても簡単にどこまでも広げていくことができます。 同じように解釈すればよいだけなのですから。

三進数の世界の人たちにとって、1割る3(三分の一)は単純に0.1と書けちゃいます。 三分の一が割り切れないのは、十進数の世界に住む私たちの都合です。 十進数だから、書ききれないというだけなのです。

どおです?面白くないですか。

2進数の世界、コンピューターの世界

ここまでは想像の三進数世界でしたが、これからは、実社会で問題になりうる事を話します。

進数によって、表現できるできないがあることを話しました。 小学生の時は、割り切れないときは小数第3位で四捨五入しなさいなどの指示があったはずです。 つまり、表現しきれない場合は、近い値でヨロシクしなさいというわけです。

コンピュータは数値を二進数で扱います。 電気信号のオンとオフに起因します。 人間が十進数で与えた数字は、内部で二進数に変換され計算されます。 十進数でも循環小数があるように、当然、二進数でも循環することがあります。 そして、十進数では簡単に表現される小数が、二進数では表現しきれない場合があるのです。

コンピュータといえども、無限に続く循環小数を扱いきれるものではありません。 そんな数値をコンピュータ内では、一般には切り捨て、場合によって四捨五入や切り上げを行い、できうる限り近い数で扱おうとします。 このような処理を「丸め」といい、丸めにより発生する数値の違いを「丸め誤差」と呼んでいます。

お金を扱うようなプログラムの場合、1円の違いも許されません。 循環小数は扱いませんし、割り切れない場合の端数も厳密に扱います。 また二進数変換せずに十進数に近い計算方法が採用されいたりします。 しかし、表計算ソフトなどは厳密でない事が多いので、注意が必要です。

また、学術計算など、当然のように無理数も扱います。 有効桁数を意識し、誤差の範囲を最小限にするような計算方法を取る努力が、欠かせないのです。

まとめ

進数のもとになる数を「基数」と呼びます。 十進数であれば基数は10、二進数であれば基数は2となります。 割り切れるか、循環小数になってしまうかは、基数の取り方によって変わってしまいます。

そして、割り算の結果が書ききれない数字だとしても、それを上手に使える道具を持っています。 道具の名前は?ご存じ「分数」です。 分数を使えば、割り切れない数も、いとも簡単(?)にあつかえます。 一般的にコンピューターは分数を扱えないので、誤差を含む近似値にならざるを得ないのです。

書けるか書ききれないか、小数が循環するかしないか・・・ そんな事は、数値表現による制約であるだけで、数学的に差はなく有理数としてひとくくりにしてよさそうですね。

参考

乱筆

この記事のきっかけは、、、

高1年の教科書をみる機会があり、有理数無理数の概念説明があった。
有理数か・・・循環小数って面白いよな・・・とか。
循環小数の分数化なんてあったよなぁ・・・とか。

すると、割り切れるって、どういう意味だっけ?と疑問がわく。

偶数は2で割れるとか10でなら必ず割り切れるよな・・・モヤモヤと考えていた。
アレレ?3で割るのと10で割る・・・数字が違うだけで、数学的には同じだよなぁ。
と、考えてると、あぁそうか、10進数、基数が10だから絶対割り切れるんだよな。
基数が3なら、ぜったい3で割り切れる・・・モヘェ。

では、何が違うかといえば、表現できるか出来ないかダケ、と思い至ったわけである。
循環小数の循環部の表現方法もあるにはあるが、便宜上の物で、優れた数学表記には思えないし。

そんなとき、とある旅行に使うため、グーグルマップから経路データを引っ張ってきた。
グーグルマップの地点データは、緯度経度で示されていて、360を最大とする小数5桁を含む10進度数法で示されていた。
これから主要地点や全行程の距離を算出すべく、地上のXY直交データに変換する方法を探す。
国土地理院のHPに、オンラインで変換してくれるサービスがあるのだが、要求されるデータが3600000を最大値とする小数4桁を含む度分秒法で示さねばならなかった。
角度にして1度未満は、60進法の分と秒に変換だ。
データは2000程度なので、表計算ソフトを使って変換させたのだが、そこで丸め誤差にしてやられる。
秒単位に数値60が発生していた。
60進法なので取っていい値は0から59。

まぁ、大した話ではないのだが、基数でかけ割りしたり、整数化に関数INT()を使っていたので、さもありなんという話。

学校でBCDとか習ったけど、何に使うんそれ?だったなぁ。
COBOLって素晴らしい・・・しらんけど、という余談もw

以上

免責事項

  • 本記事によって起きたいかなる損害に対し、筆者は責任を負うことはできません。

執筆者備考

2024/04/05 初稿

権利表示

Copyright (C) 2023,2024 upsndownsjp, All Right Reserved.