找回密码
 欢迎注册
楼主: chyanog

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

[复制链接]
 楼主| 发表于 2010-5-19 14:56:55 | 显示全部楼层
本帖最后由 chyanog 于 2010-5-19 15:12 编辑 我用Wayne的思路改写如下,效率提高了些,但仍不快。
  1. function[n_] :=
  2. Total /@ (1.0/
  3. GatherBy[Range[10^(n - 1), 10^n - 1],
  4. MemberQ[IntegerDigits[#1], 9] &])
  5. function /@ Range[7] // Timing
复制代码
{63.344, {{2.71786, 0.111111}, {2.05399, 0.294418}, {1.81787, 0.489222}, {1.63336, 0.669671}, {1.46978, 0.832847}, {1.32278, 0.979807}, {1.1905, 1.11208}}}
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-19 14:59:49 | 显示全部楼层
根据欧拉定理,所有的n位正整数的倒数和$=ln(10^n)-ln(10^(n-1))=ln10=2.3025850929940456840179914546844$ 上述式子当n比较大时成立,也即 无心人 的 $s0+s9$
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-19 15:02:15 | 显示全部楼层
奇怪,无心人 的 $s0+s9$ 怎么都那么大? 原来,他计算的分母起始值是“1”,而非楼主要求 $10^(n-1)$,所以得重算一遍啊。。。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-5-19 15:14:34 | 显示全部楼层
24.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-19 15:32:17 | 显示全部楼层
搞错了啊
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-5-19 15:33:54 | 显示全部楼层
  1. include9[n_Integer] :=
  2. Select[Range[10^(n - 1), 10^n - 1], MemberQ[IntegerDigits[#], 9] &]
  3. diff[x_] :=
  4. Total[2.0/ include9[x]] - (HarmonicNumber[10^x - 1.0] - HarmonicNumber[10^(x - 1) - 1.0])
  5. diff /@ Range[6] // Timing
复制代码
Out[3]= {5.75, {-2.60675, -1.75957, -1.32865, -0.963693, -0.636937, \ -0.342977}}
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-19 15:43:48 | 显示全部楼层
program inv9; {$APPTYPE CONSOLE} uses SysUtils, math; function is9(n: integer): boolean; begin is9 := false; while n > 0 do begin if (n mod 10) = 9 then begin is9 := true; break; end; n := n div 10; end; end; var n, m: integer; s0, s9: double; d: array[0..9] of integer; i: integer; begin d[0] := 1; for I := 1 to 9 do begin d[i] := d[i-1] * 10; s0 := 0.0; s9 := 0.0; writeln('============================='); writeln('位数 = ', i); writeln(formatDateTime('当前时间: yy-mm-dd hh:nn:ss', now)); n := d[i - 1]; while n <= d[i] - 1 do begin if is9(n) then s9 := s9 + 1 / n else s0 := s0 + 1 / n; inc(n); end; writeln('s9 = ', s9); writeln('s0 = ', s0); writeln('s9 / s0 = ', s9 / s0); writeln(formatDateTime('当前时间: yy-mm-dd hh:nn:ss', now)); end; end. 修改了,下面是结果
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-19 15:44:59 | 显示全部楼层
============================= 位数 = 1 当前时间: 10-05-19 15:42:39 s9 = 1.11111111111111E-0001 s0 = 2.71785714285714E+0000 s9 / s0 = 4.08818805665061E-0002 当前时间: 10-05-19 15:42:39 ============================= 位数 = 2 当前时间: 10-05-19 15:42:39 s9 = 2.94417641446448E-0001 s0 = 2.05399162222492E+0000 s9 / s0 = 1.43339261105423E-0001 当前时间: 10-05-19 15:42:39 ============================= 位数 = 3 当前时间: 10-05-19 15:42:39 s9 = 4.89221917709748E-0001 s0 = 1.81787142520098E+0000 s9 / s0 = 2.69117997525959E-0001 当前时间: 10-05-19 15:42:39 ============================= 位数 = 4 当前时间: 10-05-19 15:42:39 s9 = 6.69670962910865E-0001 s0 = 1.63336421258317E+0000 s9 / s0 = 4.09994879128505E-0001 当前时间: 10-05-19 15:42:39 ============================= 位数 = 5 当前时间: 10-05-19 15:42:39 s9 = 8.32846704579077E-0001 s0 = 1.46978338923997E+0000 s9 / s0 = 5.66645881751150E-0001 当前时间: 10-05-19 15:42:39 ============================= 位数 = 6 当前时间: 10-05-19 15:42:39 s9 = 9.79806535235522E-0001 s0 = 1.32278305776675E+0000 s9 / s0 = 7.40715969623718E-0001 当前时间: 10-05-19 15:42:39 ============================= 位数 = 7 当前时间: 10-05-19 15:42:39 s9 = 1.11208277030073E+0000 s0 = 1.19050277269338E+0000 s9 / s0 = 9.34128668835241E-0001 当前时间: 10-05-19 15:42:39 ============================= 位数 = 8 当前时间: 10-05-19 15:42:39 s9 = 1.23113282070628E+0000 s0 = 1.07145231728750E+0000 s9 / s0 = 1.14903183356123E+0000 当前时间: 10-05-19 15:42:46 ============================= 位数 = 9 当前时间: 10-05-19 15:42:46 s9 = 1.33827802796730E+0000 s0 = 9.64307069526340E-0001 s9 / s0 = 1.38781314610153E+0000 当前时间: 10-05-19 15:43:57
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-19 15:47:33 | 显示全部楼层
使用64位精度浮点(80位)的结果 ============================= 位数 = 1 当前时间: 10-05-19 15:45:45 s9 = 1.11111111111111E-0001 s0 = 2.71785714285714E+0000 s9 / s0 = 4.08818805665061E-0002 当前时间: 10-05-19 15:45:45 ============================= 位数 = 2 当前时间: 10-05-19 15:45:45 s9 = 2.94417641446448E-0001 s0 = 2.05399162222492E+0000 s9 / s0 = 1.43339261105423E-0001 当前时间: 10-05-19 15:45:45 ============================= 位数 = 3 当前时间: 10-05-19 15:45:45 s9 = 4.89221917709748E-0001 s0 = 1.81787142520098E+0000 s9 / s0 = 2.69117997525959E-0001 当前时间: 10-05-19 15:45:45 ============================= 位数 = 4 当前时间: 10-05-19 15:45:45 s9 = 6.69670962910866E-0001 s0 = 1.63336421258317E+0000 s9 / s0 = 4.09994879128506E-0001 当前时间: 10-05-19 15:45:45 ============================= 位数 = 5 当前时间: 10-05-19 15:45:45 s9 = 8.32846704579074E-0001 s0 = 1.46978338923997E+0000 s9 / s0 = 5.66645881751147E-0001 当前时间: 10-05-19 15:45:45 ============================= 位数 = 6 当前时间: 10-05-19 15:45:45 s9 = 9.79806535235526E-0001 s0 = 1.32278305776677E+0000 s9 / s0 = 7.40715969623709E-0001 当前时间: 10-05-19 15:45:45 ============================= 位数 = 7 当前时间: 10-05-19 15:45:45 s9 = 1.11208277030072E+0000 s0 = 1.19050277269341E+0000 s9 / s0 = 9.34128668835207E-0001 当前时间: 10-05-19 15:45:45 ============================= 位数 = 8 当前时间: 10-05-19 15:45:45 s9 = 1.23113282070638E+0000 s0 = 1.07145231728766E+0000 s9 / s0 = 1.14903183356115E+0000 当前时间: 10-05-19 15:45:52 ============================= 位数 = 9 当前时间: 10-05-19 15:45:52 s9 = 1.33827802796742E+0000 s0 = 9.64307069526623E-0001 s9 / s0 = 1.38781314610125E+0000 当前时间: 10-05-19 15:47:03
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-5-19 15:47:46 | 显示全部楼层
25# 无心人 没关系的,再接再厉啊,相信这题肯定会被完美解决的,这里可真是高手云集。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-23 23:17 , Processed in 0.028905 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表