chyanog 发表于 2010-5-19 08:01:22

当n=?时,含9的项之和开始大于不含9的项之和

n=1时 , 1/9<1/8+1/7+1/6+1/5+1/4+1/3+1/2+1
n=2 时,1/19 + 1/29 + 1/39 + ……+ 1/89 + 1/90 + 1/91 + …… + 1/98 + 1/99<1/10 +1/11+1/12 +…… + 1/88
n=3时,1/109 + 1/119 + 1/129 + …… + 1/889 + 1/890 + 1/891 + ……+ 1/999<1/100 + 1/101 + 1/102 + ……+ 1/888

问当n=?时,含9的项之和开始大于不含9的项之和。
说明:n表示分母的位数,每个不等式两边合起来的分母为n位数的所有自然数。

用Mathematica实现如下:
g := Length, # == 9 &]]
arr :=
Select, g[#] > 0 &]   (*g[#]!=0&*)
(*f:=Tr@(1.0/arr)-(HarmonicNumber-HarmonicNumber[10^(\
x-1)-1.0]-Tr@(1.0/arr))*)
f := Tr@(2.0/
   arr) - (HarmonicNumber -
    HarmonicNumber)
n = Input[""];
If > 0, Print["n=", n, "", ">"], Print["n=", n, "", "<"]]
但效率实在不高,当n>6时,就要运行很长时间,不知道怎么改进,希望大家指点一二。或者用C也行,但我现在还没什么好的思路。

gxqcn 发表于 2010-5-19 08:49:50

n 位正整数有 9*10^(n-1) 个,
其中完全不含9的有 8*9^(n-1) 个,
所占比例为 \lambda=\frac{8*9^(n-1)}{9*10^(n-1)}=8/9*0.9^(n-1),
令 \lambda<0.5,解得 n>=7
估计符合要求的还要大一些(因为9是十进制中最大的数字,作为分母对和贡献很小)

无心人 发表于 2010-5-19 08:57:13

要是那么多数字加在一起,不知道双精度的情况是否还能保证不出现影响结果的误差

chyanog 发表于 2010-5-19 09:00:31

尽量还是不用浮点儿为好,但精确的太耗时间了

gxqcn 发表于 2010-5-19 09:24:23

精确的,也即内部采用分数计算的,中间过程计算量非常大,因为要通分运算。
建议用浮点的即可,而后再精确验证之。

无心人 发表于 2010-5-19 09:55:25

我认为永远不可能得到精确值

无心人 发表于 2010-5-19 09:56:17

几千万个 超大整数加在一起,你们以为要多快?

无心人 发表于 2010-5-19 09:56:43

32位精度的实数够了吧?

无心人 发表于 2010-5-19 10:18:08

可以用mpfr高精度库做

gxqcn 发表于 2010-5-19 10:37:29

我的意思是先用双精度类型确定出大致的n,
再用高精度类型验证n±1范围内哪个最合适。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 当n=?时,含9的项之和开始大于不含9的项之和