這是在 2006 年 11 月 17 日瀏覽小百合時(shí)得到的,當(dāng)時(shí)上不來(lái),就暫存在我的信箱里了。
南京大學(xué)小百合站,Algorithm 版,x->18->1 和 x->18-2。
x->18->1:(兩處紅色標(biāo)記是我個(gè)人加上的,懷疑原文有誤
,即若有 10 和 100,則前面不應(yīng)有 90 和 1800)
令結(jié)果為 x
x=log2+log3+...+log9
+90+log1.1+log1.2+...+log9.9
+1800+log1.01+log1.02+...+log9.99
+3
=∫logx dx (從2到10)
+90+10∫logx dx(從1.1到9.9)
+1800+
100∫logx dx (從1.01到9.99)
+3
= ...
后兩次積分上限的不同是考慮到修正
x->18->2:
x=(∫log(x)dx(2--1001)+∫log(x)dx(1--1000))/2
=((x*log(x)-∫xdlog(x))(2--1001)+(x*log(x)-∫xdlog(x))(1---1000))/2
=2567.857000.....
我個(gè)人的想法:
經(jīng)過(guò)上述兩個(gè)方法,我猜想求解一個(gè)數(shù)的位數(shù)可以求解該數(shù)對(duì)其基數(shù)的對(duì)數(shù)(此處是以 10 為基數(shù)的),找了幾個(gè)數(shù)寫(xiě)了寫(xiě),發(fā)現(xiàn)可以:
一個(gè)以 b 為基數(shù)的數(shù) N,在以 b 為基數(shù)的計(jì)數(shù)系統(tǒng)中的位數(shù) l,可以通過(guò)求 N 對(duì) b 的對(duì)數(shù)求得。
具體為:l=floor[log b (N) + 1],即求對(duì)數(shù),結(jié)果加 1 后向下取整。
例如:
- length(123456789)10=floor[lg(123456789)+1]=floor[8.091514977+1
]=9
- length(100000000)10=floor[lg(100000000)+1]=floor[8+1]=9
- length(10101)2=floor[log 2 (23) + 1]=floor[4.523561956+1]=5 (10101)2=(23)10
再回到求解 1000 的階乘的位數(shù)上,則根據(jù)上面的說(shuō)明,有:(設(shè) 1000 的階乘結(jié)果為 N)
length(N)10=floor[lg(N)+1]
=floor[lg(1*2*3*...*999*1000)+1]
=floor[lg1+lg2+lg3+...+lg999+lg1000+1]
=floor[lg2+lg3+...lg999+lg1000+1] <= lg1=0
這時(shí)問(wèn)題轉(zhuǎn)到了求解 lg2+lg3+...+lg999+lg1000 的累加上面。
對(duì)于這一方面我不是很清楚(高等數(shù)學(xué)基本都不記得了...)
,不過(guò)根據(jù)前面兩篇文章,好像有:
∑(N=2..1000)lgN = ∫lgxdx (x=2..1000)
如果成立的話(huà),則根據(jù) lgx = lnx/ln10 有:
∫lgxdx (x=2..1000) = (1/ln10)*∫lnxdx (x=2..1000)
= (1/ln10)*[x*lnx - ∫xd(lnx)] (x=2..1000)
= (1/ln10)*[x*lnx - ∫dx] (x=2..1000)
= (1/ln10)*[x*lnx - x] (x=2..1000)
= x*(lnx - 1)/ln10 (x=2..1000)
然后由牛頓-萊伯尼茨公式可以得到:(也不知道是否能在此處應(yīng)用...)
∫lgxdx (x=2..1000) = 1000*(ln1000 - 1)/ln10 - 2*(ln2 - 1)/ln10
= [1000*(6.907755279 - 1) - 2*(0.693147181 - 1)]/ln10
= [1000*
5.907755279 - 2*(-0.306852819)]/2.302585093
= [5907.755279 - (-
0.613705639)]/2.302585093
= 5908.368984639/2.302585093
= 2565.97204707
將結(jié)果代回前面的式子:
length(N)10 = floor[2565.97204707 + 1] = 2566
原先通過(guò) Python 計(jì)算過(guò) 1000 的階乘,位數(shù)為 2568 位。
考慮前面推算的過(guò)程中把 x=1 時(shí) lg1 略掉了,理論上不應(yīng)產(chǎn)生區(qū)別,但若要是不略掉該項(xiàng)時(shí),則結(jié)果變成:
∫lgxdx (x=2..1000) = 1000*(ln1000 - 1)/ln10 - 1*(ln1 - 1)/ln10
= [1000*(
6.907755279 - 1) - 1*(0 - 1)]/ln10
= [1000*5.907755279 - 1*(-1)]/2.302585093
= [5907.755279 + 1]/2.302585093
=
5908.755279/2.302585093
= 2566.13981258
length(N)10 = floor[2566.13981258 + 1] = 2567
可見(jiàn)結(jié)果略有不同,但都與正確結(jié)果有一點(diǎn)小偏差,個(gè)人認(rèn)為思路是正
確的,方法還有待改進(jìn)。同時(shí)看到第二篇引文的結(jié)果非常接近,不過(guò)我還不理解,還需在琢磨琢磨。
還要再好好看看高等數(shù)學(xué)...