以下の内容はhttps://spherical-harmonics.hateblo.jp/entry/Kyodai/2017/Bunkei_2より取得しました。


2017年(平成29年)京都大学-数学(文系)[2]

2025.05.06記

[2] 次の問に答えよ.ただし,0.3010\lt \log_{10}2\lt 0.3011 であることは用いてよい.

(1) 100 桁以下の自然数で,2 以外の素因数を持たないものの個数を求めよ.

(2) 100 桁の自然数で,25 以外の素因数を持たないものの個数を求めよ.

本問のテーマ
商による誤差の伝播を利用した評価(対数)
連分数

2025.05.09記
(1) が 100 桁以下の自然数,(2) がちょうど 100 桁の自然数となっているので(2)の議論をどう(1)に帰着させるか考える必要がある.そうすると,何故「25」だとうまくいくかがわかり,この場合以外数えるのが大変であることがわかるって,単に 2\times 5=10 となっているだけなのだが.

以下の解答では \dfrac{1}{\log_{10}2}=3.321\cdots\dfrac{1}{\log_{10}5}=1.430\cdots を計算するのに割り算ではなくかけ算によって評価した.それは \log_{10}20.3 に近い値で \log_{10}50.7 に近い値なので割り算によって1桁ずつ求めるよりも簡単に商が求められるからである.

[解答]
(1) 2^n\lt 10^{100} を満たす0 以上の整数 n の個数であるから n\lt\dfrac{100}{\log_{10} 2} を満たす最大の自然数 n を求める.
0.3010\times 3.3=0.9933 から(0.3010\times 3.322=0.999922 の方が簡単に求まるが)0.3010\times 3.32=0.99932 となるので

0.3010\times 3.33=0.99932+0.00301=1.002330.3011\times 3.32=0.99932+0.000332=0.999652 から
332\lt \dfrac{332}{0.999652}=\dfrac{100}{0.3011}\lt\dfrac{100}{\log_{10} 2}\lt \dfrac{100}{0.3010}=\dfrac{333}{1.00233}\lt 333
が成立するので,n0 以上 332 以下の整数の個数である 333 個である.

(2) 例えば 2^k90 桁であったとすると 2^k\times 10^{10}=2^{k+10}\times 5^{10}100 桁の自然数となるように,(1)の 333 個の自然数の末尾に 0 を必要個数つけ加えることによって 100 桁の自然数333 個作ることができる.これらの自然数10^{99} を除いて 2 の素因数の個数の方が多いものの個数となる.

同様に 100 桁以下の自然数で,5 以外の素因数を持たないものの末尾に 0 を必要個数つけ加えることによって 100 桁の自然数を作ることができるので,このような自然数の個数を数えれば, 10^{99} を除いて 5 の素因数の個数の方が多いものの個数となる.

さて,100 桁以下の自然数で,5 以外の素因数を持たないものの個数は 5^n\lt 10^{100} を満たす0 以上の整数 n の個数であるから n\lt\dfrac{100}{\log_{10} 5} を満たす最大の自然数 n を求める.

\dfrac{1}{7}=0.1428\cdots を想起して,
0.699\times 1.43=0.7\times 1.43-0.00143=1.001-0.00143\lt 1
0.6989\times 1.44=0.7\times 1.44-0.00144-0.00144=1.008-0.00144-0.00144\gt 1 から
143\lt \dfrac{100}{0.699}\lt\dfrac{100}{\log_{10} 5}\lt \dfrac{100}{0.6989}\lt 144
が成立するので,n0 以上 143 以下の整数の個数である 144 個である.

よって求める個数は,重複分の 10^{99} を除いて 333+144-1=476 個となる.

\dfrac{1}{\log_{10}5} の評価において,0.699\times 1.43=0.7\times 1.43-0.00143=1.001-0.00143=0.99957 であり,0.699\times 1.44=0.7\times 1.44-0.00144=1.008-0.00144=1.00656 から 0.6989\times 1.44=1.00656-0.000144=1006416 と計算することができるが,必要なのは 1 との大小関係だけなので,[解答]では 1 との大小関係だけを示した.

練習がてら同じ方法で 0.4771\lt \log_{10} 3\lt 0.4772 から \dfrac{1}{\log_{10} 3} を評価してみると 0.4771\times 2=0.9542 から 0.4771\times 2.1=0.9542+0.04771=1.001910.004771 より小さい値だけ1を超過しているので,2.09\lt \dfrac{1}{0.4771}\lt 2.10 であることがわかる.まぁ,やっていることは筆算そのものなのだけど,筆算は通常下からの評価だけを行うので,この調整方法だと臨機応変に上からの評価も利用していることになる.そしてこの評価が \dfrac{1}{\log_{10} 2}\dfrac{1}{\log_{10} 5} の場合には特にやり易いのである.

商による誤差の伝播
|\delta| が十分に小さいとき,\dfrac{1}{1-\delta}\approx 1+\deltaマクローリン展開を利用した一次近似,等比数列の和の途中項での打ち切り)が成立するので,\dfrac{1}{x\pm\Delta x}\approx \dfrac{1}{x}\cdot\left(1\mp\dfrac{\Delta x}{x}\right) が成立する.この式は |\delta| が十分に小さいとき,y=(1\pm\delta)x のとき \dfrac{1}{y}\approx(1\mp\delta)\dfrac{1}{x} と見る方がわかり易く,x1.001 倍になると \dfrac{1}{x} はほぼ 0.999 倍になると理解すれば良い.

このことを用いると,\log_{10} 20.3 に比べ \dfrac{1}{300} 程度大きいのでその逆数は \dfrac{1}{300} 程度小さくなり,\dfrac{1}{\log_{10} 2} \approx \dfrac{10}{3}\cdot\dfrac{299}{300}=3.32222… と近似的に求めることができ(実際の値は 3.321928\cdots),\log_{10} 50.7 に比べ \dfrac{1}{700} 程度小さいのでその逆数は \dfrac{1}{700} 程度大きくなり,\dfrac{1}{\log_{10} 5} \approx \dfrac{10}{7}\cdot\dfrac{701}{700}=1.43061… と近似的に求めることができる(実際の値は 1.430676\cdots).

この考え方に基づいて,\dfrac{1}{0.3}\dfrac{1}{0.7} との比を評価することによって \dfrac{100}{\log_{10}2}\dfrac{100}{\log_{10}5} の値を評価すると次のようになる.

\dfrac{3}{10}\cdot\dfrac{301}{300}\lt \log_{10} 2 \lt \dfrac{3}{10}\cdot\dfrac{3011}{3000} であるから,

\dfrac{1000}{3}\cdot\dfrac{300}{301}\gt\dfrac{100}{\log_{10} 2} \gt \dfrac{1000}{3}\cdot\dfrac{3000}{3011}

が成立する.ここで

\dfrac{1000}{3}\cdot\dfrac{300}{301}=\dfrac{1000}{3}\cdot\left(1-\dfrac{1}{301}\right)=\dfrac{1000}{3}\cdot\left(1-\dfrac{3}{903}\right)\lt\dfrac{1000}{3}\cdot\left(1-\dfrac{3}{1000}\right)=\dfrac{1000}{3}-1=332.\dot{3}

\dfrac{1000}{3}\cdot\dfrac{3000}{3011}=\dfrac{1000}{3}\cdot\left(1-\dfrac{11}{3011}\right)\gt\dfrac{1000}{3}\cdot\left(1-\dfrac{11}{3000}\right)=\dfrac{1000}{3}-\dfrac{11}{9}=332.\dot{1}

であるから,332.\dot{1}\lt\dfrac{100}{\log_{10}2}\lt 332.\dot{3} が成立する.

また,\dfrac{7}{10}\cdot\dfrac{6989}{7000}\lt \log_{10} 5 \lt \dfrac{7}{10}\cdot\dfrac{699}{700} であるから,

\dfrac{1000}{7}\cdot\dfrac{7000}{6989}\gt\dfrac{100}{\log_{10} 5} \gt \dfrac{1000}{7}\cdot\dfrac{700}{699}

が成立する.ここで

\dfrac{1000}{7}\cdot\left(1+\dfrac{1}{699}\right)\gt\dfrac{1000}{7}\cdot\left(1+\dfrac{1}{700}\right)\gt\dfrac{1000}{7}\cdot\left(1+\dfrac{7}{5000}\right)=\dfrac{1000}{7}+0.2=143.057\cdots

\dfrac{1000}{7}\cdot\left(1+\dfrac{11}{6989}\right)\lt\dfrac{1000}{7}\cdot\left(1+\dfrac{14}{6666.\dot{6}}\right)=\dfrac{1000}{7}+0.3=143.157\cdots

であるから,143.057\cdots\lt\dfrac{100}{\log_{10}5}\lt 143.157\cdots が成立する.

\log の評価の類題は 2011年(平成23年)京都大学-数学(文系)[5] - [別館]球面倶楽部零八式markIISR 参照.

連分数展開

先程の話は連分数近似に近い.0.30100.3011 の連分数展開を違いが出るまで行うと

0.3010=\dfrac{1}{3+\dfrac{1}{3+\dfrac{1}{9+\dfrac{7}{10}}}}0.3011=\dfrac{1}{3+\dfrac{1}{3+\dfrac{1}{8+\dfrac{87}{110}}}}

となるので

\dfrac{31}{103}=\dfrac{1}{3+\dfrac{1}{3+\dfrac{1}{10}}}\lt 0.3010 \lt 0.3011\lt\dfrac{1}{3+\dfrac{1}{3+\dfrac{1}{8}}}=\dfrac{25}{83}

が成立する.よって

332.258\cdots =\dfrac{10300}{31}\gt \dfrac{100}{\log_{10} 2}\gt \dfrac{8300}{25}=332

が成立する.もっとも,連分数展開(ユークリッドの互除法)は手計算ではそれなりに面倒なので実践的とは言えなさそうであるが.




以上の内容はhttps://spherical-harmonics.hateblo.jp/entry/Kyodai/2017/Bunkei_2より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14