wayne 发表于 2010-5-19 10:52:59

Mathematica one-liner :

Total /@ Divide, MemberQ, 9] &]] // N

计算得到{11.0157, 3.37707},即不含9的为11.0157,含9的为 3.37707

wayne 发表于 2010-5-19 10:59:59

猜想,不含9的,永远大于含9的

无心人 发表于 2010-5-19 11:13:20

这个程序在于怎么快速划分是含9数字和不是含9数字

无心人 发表于 2010-5-19 11:38:46

计算到n=8

n = 6
当前时间: 10-05-19 11:36:19
s9:3.37707487299286E+0000
s0:1.10156508498724E+0001
当前时间: 10-05-19 11:36:19

n = 7
当前时间: 10-05-19 11:36:37
s9:4.48915764329263E+0000
s0:1.22061536225655E+0001
当前时间: 10-05-19 11:36:37

n = 8
当前时间: 10-05-19 11:37:04
s9:5.72029046399861E+0000
s0:1.32776059398579E+0001
当前时间: 10-05-19 11:37:11

s9表示含9的,s0表示不含9

无心人 发表于 2010-5-19 11:42:32

计算结果表明,s9 / s0在逐渐加大

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, max: integer;
s0, s9: double;
begin
    s0 := 0.0;
    s9 := 0.0;
    write('输入终止数字:');
    readln(max);
    writeln(formatDateTime('当前时间: yy-mm-dd hh:nn:ss', now));
    for n := 1 to max do
    begin
       if is9(n) then
         s9 := s9 + 1 / n
       else
         s0 := s0 + 1 / n;
    end;


    writeln('s9 =', s9);
    writeln('s0 =', s0);
    writeln('s9 / s0 = ', s9 / s0);
    writeln(formatDateTime('当前时间: yy-mm-dd hh:nn:ss', now));
end.

稍后贴上结果

无心人 发表于 2010-5-19 11:46:04

输入终止数字:9999
当前时间: 10-05-19 11:41:00
s9 =   1.56442163317817E+0000
s0 =   8.22308440286620E+0000
s9 / s0 =1.90247546605856E-0001
当前时间: 10-05-19 11:41:00

输入终止数字:99999
当前时间: 10-05-19 11:41:06
s9 =   2.39726833775723E+0000
s0 =   9.69286779210615E+0000
s9 / s0 =2.47322917135996E-0001
当前时间: 10-05-19 11:41:06

输入终止数字:999999
当前时间: 10-05-19 11:41:13
s9 =   3.37707487299286E+0000
s0 =   1.10156508498724E+0001
s9 / s0 =3.06570616572508E-0001
当前时间: 10-05-19 11:41:13

输入终止数字:9999999
当前时间: 10-05-19 11:41:24
s9 =   4.48915764329263E+0000
s0 =   1.22061536225655E+0001
s9 / s0 =3.67778235642841E-0001
当前时间: 10-05-19 11:41:24

输入终止数字:99999999
当前时间: 10-05-19 11:41:32
s9 =   5.72029046399861E+0000
s0 =   1.32776059398579E+0001
s9 / s0 =4.30822430633139E-0001
当前时间: 10-05-19 11:41:39

输入终止数字:999999999
当前时间: 10-05-19 11:41:47
s9 =   7.05856849197676E+0000
s0 =   1.42419130093965E+0001
s9 / s0 =4.95619407822506E-0001
当前时间: 10-05-19 11:43:07

无心人 发表于 2010-5-19 11:47:53

估计这个s9 / s0会无限接近1,但永远小于1

无心人 发表于 2010-5-19 11:51:01

计算n = 10的
9999999999个数字,64位运算,恐怕要等很长时间了,下午贴结果

无心人 发表于 2010-5-19 14:39:07

输入终止数字:9999999999
当前时间: 10-05-19 11:50:18
9 =   8.49327722400620E+0000
0 =   1.51097893709351E+0001
9 / s0 =5.62104276605184E-0001
当前时间: 10-05-19 12:43:23

太大的数字误差就大了,仅供参考

chyanog 发表于 2010-5-19 14:52:42

大家理解有误了,可能是我描述不够清楚。
注意分母的位数是n
页: 1 [2] 3 4 5 6 7 8 9 10
查看完整版本: 当n=?时,含9的项之和开始大于不含9的项之和