9.b≠kpとなる解を含むような恒等式の heuristic な構成方法


b≠kpの場合を考える。
cは必ずpの倍数となる。

P=an−b、C=e(cn−d)(an−b)
gcd(a,b)=1, gcd(c,d)=1, b<a, d<c

とおく。

 m/P−1/C
= m/(an−b)−1/e(cn−d)(an−b)
={me(cn−d)−1}/e(cn−d)(an−b)
={mecn−(med+1)}/e(cn−d)(an−b)

ここで、分母の an−b が約されるものとする。

         mec/a=(med+1)/b
          mecb=a(med+1)
∴  me(bc−ad)=a

よって、mはaを割り切る。a=mkとおくと、

   me(bc−ad)=mk
∴  e(bc−ad)=k

よって、eはkを割り切る。

約されて残った部分は、nの係数に着目すると、

mec/ea=mec/emk=c/k

となるから、c/k(cn−d)が残る。すなわち、

m/(an−b)=c/k(cn−d)+1/e(cn−d)(an−b)


次に、このc/k(cn−d)を1/A+1/Bに分解することを考える。
A=fn−gとし、c/k(cn−d)−1/A の分子が1となる条件を求める。

c/k(cn−d)−1/(fn−g)
={c(fn−g)−k(cn−d)}/k(cn−d)(fn−g)
={(f−k)cn+(dk−cg)}/k(cn−d)(fn−g)

nの係数は0でなければならない。故に、f=k。 変数fは使わず、kに置き換える。

=(dk−cg)/k(cn−d)(kn−g)

h=gcd(k,g), i=k/h, j=g/h とすると、

=h(di−cj)/k(cn−d)h(in−j)
=(di−cj)/k(cn−d)(in−j)

よって、(di−cj)|k が求める条件である。f=k/(di−cj) とする。 得られる恒等式は、

m/P=1/A+1/B+1/C
  P=an−b
  A=h(in−j)
  B=f(cn−d)(in−j)
  C=e(cn−d)(an−b)

この関係を満たすような a,b,c,d,e,f,h,i,j を探してみる。プログラムは以下のとおり。

プログラム(メインループ)

 10  ' mn3.ub
 20  for m=4 to 7
 30    for k=1 to 100\m : a=m*k
 40      for e=1 to k : if k@e>0 then 160 : ' next e
 50        for b=1 to a-1 : if gcd(a,b)>1 then 150 : ' next b
 60          for d=1 to a*5 : ' c,dの範囲は不明。経験則。
 70            c=(k/e+a*d)\b : if res<>0 then 140 : ' next d
 80            if gcd(c,d)>1 then 140 : ' next d
 90            for g=1 to k
100              h=gcd(k,g) : i=k\h : j=g\h
110              f=k\(d*i*-c*j):if res<>0 then 130 : ' next g
120              gosub *式のprint
130            next g
140          next d
150        next b
160      next e
170    next k
180  next m

式の print

P=an−b
A=h(in−j)
B=f(cn−d)(in−j)
C=e(cn−d)(an−b)

を順に print する。このとき cutspc(str(数値)) とすると、数値の前後のスペースが消えて見映えがよくなる。

式を満たす個別解の print

得られた式を満たす解を求める。
例えば、an−b となる数の print 方法は以下のとおり。

10  n=1: p=an-b
20  while p<=100
30    if prmdiv(p)<p then 50
40    print p
50    inc n : p=an-b : ' p=p+a の方が速くなる。
60  wend

以上の組み合わせで、

とする。このような a,b,c,d,e,f,h,i,j は必ず見つかる(定理2)。

プログラムは次のとおり。


この章の目次

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