実数の最大公約数とは

中学生を教えていて、こんなような問題があった。直方体の各辺に電球を等間隔に置いていくとき、最低で何個の電球が必要かというもの。各辺の長さは問題文に与えられている。

要は等間隔の長さがわかればよいのだが、その長さによって直方体の各辺は割り切れなくてはいけない。そんなのは一般の実数の組であったら無理なはずと思って混乱してしまった。まぁ各辺が有理数比であれば整数比にして最大公約数を求めればいいということになる。でも、実際には実数同士が有理数比かどうかは分からないし、近似するとしてもどこまでとるかで変わる。とか考えたりしてさらに混乱する。

整数の最大公約数を求めたいときには、ユークリッドの互除法というものがあった。

これは別に整数に限らず、多項式に使えば最大公約因数と呼べるようなものが出せる。実数についても、ちょっと考えれば同じ事が出来ることがわかる。

ただ、前述したことと少しかぶるけれど、辺の長さの測定には誤差があるとして、すこしでも誤差が入っていれば、このユークリッドの互除法は破綻する。
何を言っているかというと、例えば5.001と7の"最大公約数"を求めようとする。本当は5と7なのだけれど、測定誤差で0.001が入ってしまったことにする。
そこで、ユークリッドの互除法を使うと

  • ( 5.001 , 7 ) -> ( 5.001 , 1.999 ) -> ( 1.003 , 1.999 ) -> ( 1.003 , 0.996 ) -> ( 0.007 , 0.996 ) -> … -> ( 0.001 , 0.000 )

となって、誤差と同じ0.001が"最大公約数"になってしまう。これは頂けない。本当であれば、5と7の最大公約数である1になって欲しかったのに。
こういう場合はどうしたら良いのだろうか。たぶん0と見做す閾値を設けてそこで止めれば良いのかもしれない。
今回の場合、( 0.007 , 0.996 )とかで止まるように閾値をきめて。。。でもそもそも閾値は事前に決められるんだろうか。はてさて。

こんなことは情報系の人がもうやってることなのかな。