1.題記不定方程式の一般的な解法


題記の不定方程式の解き方を考えてみる。
分子は一般にmとする。分母は素数の場合のみを考えればよい。pとおく。
よって、より一般化した式、

m/p=1/a+1/b+1/c(ただし、m/p≦3)

について考えてみる。

まず、1≦a≦b≦c としても一般性を失わない。

aの範囲を限定する。

     0<1/c≦1/b≦1/a≦1
∴ m/p=1/a+1/b+1/c≦3/a
∴ a/3≦p/m
∴   a≦3p/m

一方、m/p>1/a だから、

a>p/m

以上、まとめると、

p/m<a≦3p/m

尚、この条件を、プログラム内の for 〜 next 文の境界条件として使用する場合、
整数化しておいた方が扱いやすい。aは整数なので、境界条件も整数化すると、

int(p/m)+1≦a≦int(3p/m)

となる。

今度は、bの範囲を限定する。
上記で求めたaに対し、

m/p−1/a=(ma-p)/pa
        =d/e

とおく。上記と同じ議論により、

e/d<b≦2e/d

となる。a≦bも考慮に入れると、整数化した条件は、

max{a,int(e/d)+1}≦b≦int(2e/d)

となる。

上記bに対し、

d/e−1/b=(db−e)/eb
        =1/c

db−e | eb のとき、 (注:a|bは、「aはbを割り切る」という意味。例えば、2|6)

c=eb/(db−e)

以上より、与えられたm、pから、

m/p=1/a+1/b+1/c(ただし、m/p≦3)

を満たすa、b、cを求めるプログラムは次のようになる。


この章の目次

E-mail : kc2h-msm@asahi-net.or.jp
三島 久典