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
P=an−b
A=h(in−j)
B=f(cn−d)(in−j)
C=e(cn−d)(an−b)
を順に print する。このとき cutspc(str(数値)) とすると、数値の前後のスペースが消えて見映えがよくなる。
得られた式を満たす解を求める。
例えば、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
以上の組み合わせで、
まず個別解
m/P=1/A+1/B+1/C
を求める。次に、
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 は必ず見つかる(定理2)。
プログラムは次のとおり。
前 | この章の目次 | 次 |
---|