素数の常用対数を求めるという遊び


 自然数は素因数の積として表現できる。したがって自然数の対数は素数の対数の和として求められる。正の有理数は、適当な整数を掛ければ自然数になる。したがって正の有理数の対数は自然数の対数の和、差で求められる。正の無理数は、べき乗によって有理数になるか、または適当な精度の近似において有理数で表現できる。したがってその対数は有理数の対数の和、差またはそれに適当な有理数を掛けたり割ったりしたもので表現できる。結局、すべての正の実数の対数は、実用上、素数の対数から導き出せる。本稿ではいくつかの素数の常用対数を求める方法を考える。
 本稿では以下の知識のみを既知とする。これら以外を「カンニング」することもあるが、それは途中の結論を確かめるためであって、論理の構成には使用しない。
加減乗除およびべき乗+−・/,ab
対数y=ax のとき x=loga
logaxy=logax+loga
logax=logbx/logba、等
常用対数Logx=log10
自然対数e=2.7182818,lnx=loge
常用対数と自然対数の関係Logx=lnx/ln10=Loge・lnx
Taylor展開f(a+x)=f(a)+[df(a+x)/dx]x=0x+(1/2)[d2f(a+x)/dx2x=02+・・・
自然対数の微分dln(a+x)/dx=1/(a+x)
d(1/(a+x))/dx=−1/(a+x)2,等
自然対数のTaylor展開ln(a+x)=lna+x/a−x2/(2a2)+・・・

1.2と5以外のすべての素数は2乗すると末尾が1または9になる。
 すなわち、pを2と5以外の素数、mを整数とするとき、
  p2=10m±1
 したがって、
  Logp2=2 Logp=Log(10m±1)
 これは10m>>1のとき
  Log(10m)/2=(1+Logm)/2
がLogpの良い近似であることを示す。  さらに、
  Log(10m±1)=Log(10m)+Log(1±x),ただしx=1/(10m)
とし、第2項についてTaylor展開の1次までを取ると
 Log(1±x)=Loge・Ln(1±x)=±x・Loge=±Loge/(10m)
 したがって
 Logp=(1+Logm±Loge/(10m))/2   (1)
 これは素数pの常用対数のひとつの近似式である。

2.2と5以外のすべての素数は4乗すると末尾が1になる。
 Mを整数とするとき
  p4=10M+1
 したがって、
  Logp4=4 Logp=Log(10M+1)
 1.と同様に
  Logp=(1+LogM+Loge/(10M))/4   (2)
 これもLogpのひとつの近似式である。精度はこちらのほうが(1)より良いと期待される。

3.Logeの計算式
 Logpの近似式(1)または(2)を使用するためにはLogeの値が必要である。これを求めるために、Log3の Taylor展開を用いる。
  3=e+f
とすれば、
  Log3=Loge・Ln(e+f)
     =Loge・(1+f/e−f2/(2e2))
     =Loge・(12e−e2−9)/(2e2
 したがって、
  Loge=c・Log3,  c=2e2/(12e−e2−9)= 0.910525  (3)(カンニング1)

4.Log2の計算式
  Log24=Log15+Loge/15
      =Log5+Log3+c・Log3/15
      =1−Log2+(1+c/15)Log3
 したがって
  5Log2−(1+c/15)Log3=1    (4)

5.Log2とLog3の連立方程式
 式(2)においてp=3とすれば、   34=81=10*8+1
 したがってM=8=23。式(2)に式(3)を用いて
  4Log3=1+3Log2+(c/80)Log3
 整理すれば
  −3Log2+(4−c/80)Log3=1   (5)
 式(4)(5)はLog2,Log3に関する連立方程式である。これらを解くと
  Log3=8/(17-(11/80)c)=0.4741
  Log2=(1+(1+c/15)Log3)/5=0.3006
が得られる。(カンニング2)

6.Log2の計算式(その2)
 ここではLog28=8Log2を考えてみる。
  8Log2=Log(255+1)=Log255(1+1/255)
       =Log(3・5・17)+c・Log3/255
       =1−Log2+(1+c/255)Log3+Log17
 これを整理すると
  9Log2−(1+c/255)Log3−Log17=1   (6)

7.Log2,Log3,Log7,Log13,Log17の連立方程式
 Log54から次式が得られる。
  8Log2+(1+c/624)Log3+Log13=4    (7)
 Log74からは
  3Log2+(1+c/(74−1))Log3−4Log7=−2   (8)
 Log134からは
  3Log2+(1+c/(134−1))Log3+Log7−4Log13+Log17=−1   (9)
 c=0.910525 は既知なので、(5)(6)(7)(8)(9)はLog2,Log3,Log7,Log13,Log17に関する連立方程式である。
 すなわち行列表示すれば
  AX=B
 ここで
   9,−(1+c/255), 0, 0,−1
−3, 4−c/80, 0, 0, 0
 8, 1+c/624, 0, 1, 0
 3, 1+c/(74-1),−4, 0, 0
 3, 1+c/(134-1), 1,−4, 1
  =( Log2, Log3, Log7, Log13, Log17 )T
  =( 1, 1, 4, −2, −1 )T
 これの解は以下のようになる。
計算値真値相対誤差(%)
Log2 0.301029 0.301030 0.000261
Log3 0.477130 0.477121 0.001734
Log7 0.845100 0.845098 0.000182
Log13 1.113940 1.113943 0.000260
Log17 1.230430 1.230449 0.001557
 これは充分実用的な精度である。(Taylor展開項を無視すると・・)

カンニング1
  Log3=0.4771
を用いると
  Loge=c・Log3= 0.4344
 これは真値 0.4343 に対して誤差0.023%である。
 Taylor展開の1次までで計算した場合は 0.4323。
 またLog2(=0.3010)とLog3の線形補間では
  (e−2)・Log3+(3−e)・Log2= 0.4275
Logeの計算式

カンニング2
 Log2の真値0.3010との誤差は0.13%。Log3の真値0.4771との誤差は0.63%。
Log2とLog3の連立方程式

Taylor展開項を無視すると・・
 c=0とすれば、Taylor展開項 c・Log3 を無視した場合の解が得られる。
計算値真値相対誤差(%)
Log2 0.301173 0.301030 0.047634
Log3 0.475880 0.477121 0.260146
Log7 0.844850 0.845098 0.029340
Log13 1.114733 1.113943 0.070864
Log17 1.234681 1.230449 0.343908
 やや精度は落ちるが、場合によってはなんとか実用になりそうな値である。
 予備知識が非常に少なくて済む(表のうち「自然対数」以降はすべて不要)のに、これだけの精度が得られるのは、たいしたものかも知れない。
Log2,Log3,Log7,Log13,Log17の連立方程式