0
高校数学解説
文献あり

対数を使わずに桁数を求める

2234
0

この記事では長すぎる数式が連発します。スマートフォンなど画面幅が狭い端末では読みにくくなっておりますが、ご容赦ください。

はじめに

数学Ⅱの対数分野でよく見る問題として、次のようなものがあります。

2410の桁数を求めよ。ただし、log102=0.3010, log103=0.4771とする。

この問題、数学好きからするとツッコみたくなる部分があります。

log102=0.3010, log103=0.4771

とありますが、log102log103は無理数であり実際は有限小数で表せません。このような良くない書き方を回避するため、桁数系の問題を対数を使わずに解こうと思います。なお、この記事では常に数を十進法で表現するものとします。

方針

2410の値を具体的に計算して桁数を求める、ということも不可能ではないですが、さすがに時間がかかりすぎますし計算ミスも起こりやすくなります。そこで、不等式を使いましょう。
例えば整数N3×1010<N<7×1010を満たせば、N11桁であると分かります。このような評価をするにあたっては、愚直に計算するよりはマシなもののいくらかの累乗計算が必要です。2410=230×310の場合であれば230310くらいは正確な値を出しておきたいものですが、これほどの数をいちいち計算するのは少々手間がかかります。ではどうするか。
計算できないなら暗記してしまえ。

累乗数の暗記

よく使う累乗数は暗記しておくに越したことはありません。多くの人は21210や平方数くらいなら覚えているでしょうから、もっとたくさん覚えましょう。
211=2048212=4096213=8192214=16384215=32768
216=65536217=131072218=262144219=524288220=1048576
224=16777216230=1073741824232=4294967296240=1099511627776
264=184467440737095516162100=1267650600228229401496703205376

35=24336=72937=218738=656139=19683310=59049
320=3486784401327=7625597484987

55=312556=1562557=7812558=39062559=1953125510=9765625
65=7776610=6046617675=16807710=282475249
これだけ覚えておけば大抵の問題には対応できるかと思います(むしろオーバーキルかも)。ということで、早速問題1を解いてみましょう。

問題1の解答

解答 (問題1)

2410=230×310=1073741824×59049なので、
(1×109)×(5.9×104)<2410<(1.1×109)×(6×104)
5.9×1013<2410<6.6×1013
よって241014桁。

実際に計算機で計算してみると2410=63,403,380,965,376となり、正しいことが分かります。さて、ここからは実際に大学入試の問題に挑戦します。以降の問題の参照元は参考文献欄に記載しています。

より大きい数

福岡大学2012年 人文・法・商学部 数学第1問(2); 参考文献[1]

a=396のとき、a3    桁の整数である。また、1aは、小数第     位に初めて0でない数が現れる。ただし、log103=0.4771とする。

2つ目の空欄は桁数ではなく小数首位(入試問題を調べて初めて名称を知りました)を問う問題ですが、同様の方法で考えることができます。即ち、正整数mと実数N10mN<10(m1)を満たせばNは小数第m位に初めて0でない数が現れる数であることが分かります。まずは1つ目の空欄から埋めます。

解答 (問題2 空欄1)

a3=332であり、332=35×327=243×7625597484987
よって、
332>2.4×102×7.5×1012=1.8×1015
および
332<2.5×102×8×1012=2×1015
からa316桁の数であると分かります。

次が本題です。

解答 (問題2 空欄2)

a=348であり、
348=3×320×327=3×3486784401×7625597484987
よって、
348>1.04×1010×7.5×1012=7.8×1022
および
348<1.05×1010×8×1012=8.4×1022
から108.4×1023<1a<107.8×1023であるので1aは小数第23位に初めて0でない数が現れると分かります。

より高い精度

京都大学2019年 文系数学第1問; 参考文献[2]

8.9418の整数部分の桁数は何桁か。また最高位からの2桁の数字を求めよ。例えば、12345.6789の最高位からの2桁は12を指す。

この問題がノーヒントで出されていたら今回扱うような不等式評価による方法しか使えないでしょうが、さすがに実際はノーヒントではなく、常用対数表が与えられました。また、表の下部には「小数第5位を四捨五入し、小数第4位まで掲載している。」との旨が書いてあります。この時点で「無理数であるはずの対数の値を有限小数とイコールで結ぶのは許せないから」という建前大義名分は崩れますが、とにかく対数表は使わずに解きます。

さて、今までと違って894は小さい素数の積で書けません(2×3×149と素因数分解される)。a<8.94<bを満たすa,bでいい感じのものを探ろうとしてもうまくいきません。割と近そうな918でも、最高位からの2桁の数字が8.9418のそれに一致するとは思えません(実際異なります)。そこで今回は二項定理を使ってみます。

二項定理による評価

二項定理について復習しておきます。

二項定理

正整数nと実数a,bについて(a+b)n=k=0nnCkankbk
ここで、二項係数nCknCk=n!k!(nk)!により定める。

例えば1.035の値を計算する際に
1.035=15+5140.031+10130.032+=1.1592740743
のように使うことができます。では1.0320がどれくらいの値になるか調べるにはどうすればいいでしょうか。下からの評価は比較的容易でしょう。k=0,1,2,,20の全てについて20Ck120k0.03kは正ですから、
1.0320=k=02020Ck120k0.03k>k=0220Ck120k0.03k=1+200.03+1900.0009=1.771
対して上からの評価は少々厄介そうです。kが増えると0.03kの項がどんどん小さくなっていくので、直感的には1.03201.771は近そうですね。この感覚を式で表してみましょう。ak=20Ck120k0.03kとおくと、2以上20未満の整数のkに対して
ak+1ak=20!(k+1)!(19k)!0.03k+120!k!(20k)!0.03k=k!(k+1)!(20k)!(19k)!0.03k+10.03k=20kk+10.03=(21k+11)0.03(212+11)0.03<15
が成り立ちます。つまり、二項定理による(1+0.03)20の展開式の第(k+1)項は第k項の高々15倍ということになります。よって、

1.0320=k=020ak=a0+a1+a2+a3+a4++a20<a0+a1+a2+15a2+152a2++1518a2<a0+a1+n=015na2=1+0.6+0.171×54=1.81375
以上の議論から1.771<1.0320<1.81375が示されました。

問題3の解答

本問に出てくる8.9418も、(90.06)18と見ることにより二項定理が適用しやすい形になります。(1+0.03)20のときと同様に評価できれば良いのですが、
k=01818Ck920k(0.06)k=918189170.06+1539160.062
の項はすべて正というわけではないため、最初の数項で打ち切ったもので下あるいは上から抑えられるのは明らかではありません。ということで、上下からの評価はどちらも項の比を考える方法を使います。

解答 (問題3)

0以上16以下の整数のkに対してak=18Ck918k(0.06)kとおくと、
ak+2ak=18!(k+2)!(16k)!916k(0.06)k+218!k!(18k)!918k(0.06)k=k!(k+2)!(18k)!(16k)!916k918k(0.06)k+2(0.06)k=(18k)(17k)(k+1)(k+2)122500
が成り立つのでakは単調減少します。kが偶数のとき0<akなので、
8.9418=k=018ak<a0+a1+a2+a4+a6++a18=a0+a1+a2+11125a1+1112591337500a1+<a0+a1+a2+11125a2+111252a2++111258a2<a0+a1+k=011125ka2=a0+a1+11251124a2=918189170.06+112511241539160.062=918(120.06+11251124170.0004)=5314413(0.88+765112400)<(163)3×1015(0.88+0.006906)<40960.88727×1015<1.34562×1017
kが奇数のときak<0なので、
8.9418=k=018ak<a0+a1+a2+a3+a5+a7++a17=a0+a1+a2+a3+715000a3+7150001378750a3+>a0+a1+a2+a3+715000a3+(715000)2a3++(715000)7a3>a0+a1+a2+k=012142ka3=a0+a1+a2+21422141a3=918189170.06+1539160.062214221418169150.063=918(120.06+170.000423821412720.000008)=5314413(0.88685178882141000000)>5.33×10150.886558=1.488770.886558×1017>1.480.88×1017=1.3024×1017
以上より1.3×1017<8.9418<1.4×1017なので、8.9418の整数部分の桁数は17桁で最高位からの2桁の数字は13です。

かなり複雑になりましたが、手計算の範囲で証明することができました。

まとめ

以上のように、対数を用いて桁数を計算する問題の多くは対数を使わなくても答えを出すことができます。しかしそれも万能ではなく、次のような問題は今回の手法の苦手とするところです。

京都大学2016年 文系数学第2問; 参考文献[2]

ボタンを押すと「あたり」か「はずれ」のいずれかが表示される装置がある。「あたり」の表示される確率は毎回同じであるとする。この装置のボタンを20回押したとき、1回以上「あたり」の出る確率は36%である。1回以上「あたり」の出る確率が90%以上となるためには、この装置のボタンを最低何回押せばよいか。必要なら0.3010<log102<0.3011を用いてよい。

この問題のように、aを何乗するとbに達するかという形の問題で対数の値を使わずに答えを出す方法は今のところ思いついていません(二分探索すればできるでしょうがさすがに非効率的)。よい方法を思いついたら追記します。
また、当然のことながら対数を使って順当に計算した方がはやくて確実ですし、対数を使わないことで試験等で有利になりはしません。ですが、時間に余裕ができたときはこの方法で解答してみるのも一興ではないでしょうか。

参考文献

投稿日:2023528
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. はじめに
  2. 方針
  3. 累乗数の暗記
  4. 問題1の解答
  5. より大きい数
  6. より高い精度
  7. 二項定理による評価
  8. 問題3の解答
  9. まとめ
  10. 参考文献