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