gxqcn
发表于 2010-11-17 16:49:27
在我的电脑上,gxq 56楼的程序和我这个程序性能相当,只需7秒就得到结果。gxq,能否在你的电脑上测试一下我的这个程序?
liangbch 发表于 2010-11-17 15:03 http://bbs.emath.ac.cn/images/common/back.gif
你的要快多了!
我的56#结果:n = 1 Wed Nov 17 16:46:05 2010
s0 = 2.717857142857143
s9 = 0.111111111111111
s0/s9 = 24.460714285714285
s0+s9 = 2.828968253968254
n = 2 Wed Nov 17 16:46:05 2010
s0 = 2.053991622224917
s9 = 0.294417641446448
s0/s9 = 6.976455663912790
s0+s9 = 2.348409263671365
n = 3 Wed Nov 17 16:46:05 2010
s0 = 1.817871425200977
s9 = 0.489221917709748
s0/s9 = 3.715842155460231
s0+s9 = 2.307093342910725
n = 4 Wed Nov 17 16:46:05 2010
s0 = 1.633364212583175
s9 = 0.669670962910865
s0/s9 = 2.439054853869453
s0+s9 = 2.303035175494040
n = 5 Wed Nov 17 16:46:05 2010
s0 = 1.469783389239973
s9 = 0.832846704579078
s0/s9 = 1.764770612837813
s0+s9 = 2.302630093819051
n = 6 Wed Nov 17 16:46:05 2010
s0 = 1.322783057766752
s9 = 0.979806535235522
s0/s9 = 1.350045146870536
s0+s9 = 2.302589593002275
n = 7 Wed Nov 17 16:46:06 2010
s0 = 1.190502772693381
s9 = 1.112082770300745
s0/s9 = 1.070516336091988
s0+s9 = 2.302585542994125
n = 8 Wed Nov 17 16:46:07 2010
s0 = 1.071452317287522
s9 = 1.231132820706344
s0/s9 = 0.870297907152530
s0+s9 = 2.302585137993867
n = 9 Wed Nov 17 16:46:27 2010
s0 = 0.964307069526290
s9 = 1.338278027967131
s0/s9 = 0.720558097326824
s0+s9 = 2.302585097493420
你的79#结果:n = 1 Wed Nov 17 16:46:46 2010
s0 = 2.717857142857143
s9 = 0.111111111111111
s0/s9 = 24.460714285714285
n = 2 Wed Nov 17 16:46:46 2010
s0 = 2.053991622224917
s9 = 0.294417641446448
s0/s9 = 6.976455663912790
n = 3 Wed Nov 17 16:46:46 2010
s0 = 1.817871425200977
s9 = 0.489221917709748
s0/s9 = 3.715842155460231
n = 4 Wed Nov 17 16:46:46 2010
s0 = 1.633364212583175
s9 = 0.669670962910865
s0/s9 = 2.439054853869453
n = 5 Wed Nov 17 16:46:46 2010
s0 = 1.469783389239973
s9 = 0.832846704579078
s0/s9 = 1.764770612837813
n = 6 Wed Nov 17 16:46:46 2010
s0 = 1.322783057766752
s9 = 0.979806535235522
s0/s9 = 1.350045146870536
n = 7 Wed Nov 17 16:46:46 2010
s0 = 1.190502772693381
s9 = 1.112082770300745
s0/s9 = 1.070516336091988
n = 8 Wed Nov 17 16:46:47 2010
s0 = 1.071452317287522
s9 = 1.231132820706344
s0/s9 = 0.870297907152530
n = 9 Wed Nov 17 16:46:55 2010
s0 = 0.964307069526290
s9 = 1.338278027967131
s0/s9 = 0.720558097326824
gxqcn
发表于 2010-11-17 16:54:23
看来是 liangbch 的预处理起了很大作用。
liangbch
发表于 2010-11-17 18:12:05
60# 无心人
我的方法不新鲜,无心人在60#就提到这个想法,只不过我成功的实现了而已。
chyanog
发表于 2010-11-17 21:27:36
根据我的测试,liangbch 和gxqcn两位大牛的代码效率高低不好比较啊。
我用的VC10(装VS2010还不到一个月),在默认Debug的情况下,前者11s,后者22s
,用Release+“使速度最大化”选项编译,多次比较竟然速度一致,均是11s!
不过,用gcc编译,gxqcn的代码+优化选项却不起作用。。。
在Linux上暂未测试
gxqcn
发表于 2010-11-18 07:42:28
我的代码已经相当底层了,所以编译器优化不大起作用。:)
chyanog
发表于 2010-11-29 00:31:38
又实现了一种方法,以前想到过,但没写出来。代码比较丑,效率还算不错,在我的笔记本上运行14s。应该是我目前写的行数最多的程序了,感觉肯定能写精简些,但我还简化不了,哪位大牛有空了帮我看看,给点建议。
#include <stdio.h>
#include <time.h>
#include <math.h>
void disp(double s0,double s9)
{
printf( "s0 = %.15f\ns9 = %.15f\ns0/s9 = %.15f\n\n\n", s0, s9, s0/s9);
}
double calcS(int n)
{
double s=0.0;
int i,k;
k=(int)pow(10.0,n-1);
for(i=k;i<10*k;i++)
s+=1.0/i;
return s;
}
//------------------------------
void search_1()
{
double s9,s0;
s9=s0=0.0;
int a;
for (a=1;a<=8;a++)
s0+=1.0/a;
s9=calcS(1)-s0;
disp(s0,s9);
}
void search_2()
{
double s9,s0;
s9=s0=0.0;
int a,b;
for (a=1;a<=8;a++)
for (b=0;b<=8;b++)
s0+=1.0/(10*a+b);
s9=calcS(2)-s0;
disp(s0,s9);
}
void search_3()
{
double s9,s0,s;
s9=s0=0.0;
int a,b,c;
for (a=1;a<=8;a++)
for (b=0;b<=8;b++)
for (c=0;c<=8;c++)
s0+=1.0/(100*a+10*b+c);
s9=calcS(3)-s0;
disp(s0,s9);
}
void search_4()
{
double s9,s0,s;
s9=s0=0.0;
int a,b,c,d;
for (a=1;a<=8;a++)
for (b=0;b<=8;b++)
for (c=0;c<=8;c++)
for (d=0;d<=8;d++)
s0+=1.0/(1000*a+100*b+10*c+d);
s9=calcS(4)-s0;
disp(s0,s9);
}
void search_5()
{
double s9,s0,s;
s9=s0=0.0;
int a,b,c,d,e;
for (a=1;a<=8;a++)
for (b=0;b<=8;b++)
for (c=0;c<=8;c++)
for (d=0;d<=8;d++)
for (e=0;e<=8;e++)
s0+=1.0/(10000*a+1000*b+100*c+10*d+e);
s9=calcS(5)-s0;
disp(s0,s9);
}
void search_6()
{
double s9,s0,s;
s9=s0=0.0;
int a,b,c,d,e,f;
for (a=1;a<=8;a++)
for (b=0;b<=8;b++)
for (c=0;c<=8;c++)
for (d=0;d<=8;d++)
for (e=0;e<=8;e++)
for (f=0;f<=8;f++)
s0+=1.0/(100000*a+10000*b+1000*c+100*d+10*e+f);
s9=calcS(6)-s0;
disp(s0,s9);
}
void search_7()
{
double s9,s0,s;
s9=s0=0.0;
int a,b,c,d,e,f,g;
for (a=1;a<=8;a++)
for (b=0;b<=8;b++)
for (c=0;c<=8;c++)
for (d=0;d<=8;d++)
for (e=0;e<=8;e++)
for (f=0;f<=8;f++)
for(g=0;g<=8;g++)
s0+=1.0/(1000000*a+100000*b+10000*c+1000*d+100*e+10*f+g);
s9=calcS(7)-s0;
disp(s0,s9);
}
void search_8()
{
double s9,s0,s;
s9=s0=0.0;
int a,b,c,d,e,f,g,h;
for (a=1;a<=8;a++)
for (b=0;b<=8;b++)
for (c=0;c<=8;c++)
for (d=0;d<=8;d++)
for (e=0;e<=8;e++)
for (f=0;f<=8;f++)
for(g=0;g<=8;g++)
for(h=0;h<=8;h++)
s0+=1.0/(10000000*a+1000000*b+100000*c+10000*d+1000*e+100*f+10*g+h);
s9=calcS(8)-s0;
disp(s0,s9);
}
void search_9()
{
double s9,s0,s;
s9=s0=0.0;
int a,b,c,d,e,f,g,h,i;
for (a=1;a<=8;a++)
for (b=0;b<=8;b++)
for (c=0;c<=8;c++)
for (d=0;d<=8;d++)
for (e=0;e<=8;e++)
for (f=0;f<=8;f++)
for(g=0;g<=8;g++)
for(h=0;h<=8;h++)
for(i=0;i<=8;i++)
s0+=1.0/(100000000*a+10000000*b+1000000*c+100000*d+10000*e+1000*f+100*g+10*h+i);
s9=calcS(9)-s0;
disp(s0,s9);
}
int main()
{
double t0=clock();
search_1();
search_2();
search_3();
search_4();
search_5();
search_6();
search_7();
search_8();
search_9();
printf("Elapsed time: %f s\n",(clock()-t0)/CLOCKS_PER_SEC);
return 0;
}
gxqcn
发表于 2010-11-29 09:05:33
86# chyanog
重新整理了一下,但测试起来,效率似乎没有明显的提升。#include <stdio.h>
#include <time.h>
void disp(double s0,double s9)
{
printf( "s0 = %.15f\ns9 = %.15f\ns0/s9 = %.15f\n\n\n", s0, s9, s0/s9);
}
double calcS(int n)
{
static int b, e=1;
double s=0.0;
int k;
b=e, e*=10;
for(k=b;k<e;k++)
s+=1.0/k;
return s;
}
//------------------------------
void search_1()
{
double s9,s0=0.0;
int k;
for (k=1;k<=8;k++)
s0+=1.0/k;
s9=calcS(1)-s0;
disp(s0,s9);
}
void search_2()
{
double s9,s0=0.0;
int a,b,k=10;
for (b=1;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
s9=calcS(2)-s0;
disp(s0,s9);
}
void search_3()
{
double s9,s0=0.0;
int a,b,c,k=100;
for (c=1;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
s9=calcS(3)-s0;
disp(s0,s9);
}
void search_4()
{
double s9,s0=0.0;
int a,b,c,d,k=1000;
for (d=1;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
s9=calcS(4)-s0;
disp(s0,s9);
}
void search_5()
{
double s9,s0=0.0;
int a,b,c,d,e,k=10000;
for (e=1;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
s9=calcS(5)-s0;
disp(s0,s9);
}
void search_6()
{
double s9,s0=0.0;
int a,b,c,d,e,f,k=100000;
for (f=1;f<=8;f++,k+=10000)
for (e=0;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
s9=calcS(6)-s0;
disp(s0,s9);
}
void search_7()
{
double s9,s0=0.0;
int a,b,c,d,e,f,g,k=1000000;
for (g=1;g<=8;g++,k+=100000)
for (f=0;f<=8;f++,k+=10000)
for (e=0;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
s9=calcS(7)-s0;
disp(s0,s9);
}
void search_8()
{
double s9,s0=0.0;
int a,b,c,d,e,f,g,h,k=10000000;
for (h=1;h<=8;h++,k+=1000000)
for (g=0;g<=8;g++,k+=100000)
for (f=0;f<=8;f++,k+=10000)
for (e=0;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
s9=calcS(8)-s0;
disp(s0,s9);
}
void search_9()
{
double s9,s0=0.0;
int a,b,c,d,e,f,g,h,i,k=100000000;
for (i=1;i<=8;i++,k+=10000000)
for (h=0;h<=8;h++,k+=1000000)
for (g=0;g<=8;g++,k+=100000)
for (f=0;f<=8;f++,k+=10000)
for (e=0;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
s9=calcS(9)-s0;
disp(s0,s9);
}
int main()
{
double t0=clock();
search_1();
search_2();
search_3();
search_4();
search_5();
search_6();
search_7();
search_8();
search_9();
printf("Elapsed time: %f s\n",(clock()-t0)/CLOCKS_PER_SEC);
return 0;
}
G-Spider
发表于 2010-11-29 20:02:22
本帖最后由 G-Spider 于 2010-11-30 00:15 编辑
整理了一下,瓶颈在n=9时,用时最多,效率没有提升,或许将calcS()通过筛选方式只算与9有关的可能会好一点,(calcS(9)再做减法,代价非常大,占整体时间的一半以上)。还有依赖性(比如:static不是好的开始),这个好消除。#include <stdio.h>
#include <time.h>
void disp(double s0,double s9,int n)
{
printf( "s0[%d] = %.15f\ns9[%d] = %.15f\ns0/s9 = %.15f\n\n\n", n,s0,n,s9,s0/s9);
}
double calcS(int n)//n=1,2,3,...,9
{
int e={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
int k;
double s=0.0;
for(k=e;k<e;k++)
s+=1.0/k;
return s;
}
//------------------------------
double search_1()
{
double s9,s0=0.0;
int k;
for (k=1;k<=8;k++)
s0+=1.0/k;
return s0;
}
double search_2()
{
double s9,s0=0.0;
int a,b,k=10;
for (b=1;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
double search_3()
{
double s9,s0=0.0;
int a,b,c,k=100;
for (c=1;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
double search_4()
{
double s9,s0=0.0;
int a,b,c,d,k=1000;
for (d=1;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
double search_5()
{
double s9,s0=0.0;
int a,b,c,d,e,k=10000;
for (e=1;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
double search_6()
{
double s9,s0=0.0;
int a,b,c,d,e,f,k=100000;
for (f=1;f<=8;f++,k+=10000)
for (e=0;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
double search_7()
{
double s9,s0=0.0;
int a,b,c,d,e,f,g,k=1000000;
for (g=1;g<=8;g++,k+=100000)
for (f=0;f<=8;f++,k+=10000)
for (e=0;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
double search_8()
{
double s9,s0=0.0;
int a,b,c,d,e,f,g,h,k=10000000;
for (h=1;h<=8;h++,k+=1000000)
for (g=0;g<=8;g++,k+=100000)
for (f=0;f<=8;f++,k+=10000)
for (e=0;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
double search_9()
{
double s9,s0=0.0;
int a,b,c,d,e,f,g,h,i,k=100000000;
for (i=1;i<=8;i++,k+=10000000)
for (h=0;h<=8;h++,k+=1000000)
for (g=0;g<=8;g++,k+=100000)
for (f=0;f<=8;f++,k+=10000)
for (e=0;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
int main()
{
doubles0={0};
doubles9={0};
doublet0=clock();
s0=search_1();
s0=search_2();
s0=search_3();
s0=search_4();
s0=search_5();
s0=search_6();
s0=search_7();
s0=search_8();
s0=search_9();
s9=calcS(1)-s0;
disp(s0,s9,1);
s9=calcS(2)-s0;
disp(s0,s9,2);
s9=calcS(3)-s0;
disp(s0,s9,3);
s9=calcS(4)-s0;
disp(s0,s9,4);
s9=calcS(5)-s0;
disp(s0,s9,5);
s9=calcS(6)-s0;
disp(s0,s9,6);
s9=calcS(7)-s0;
disp(s0,s9,7);
s9=calcS(8)-s0;
disp(s0,s9,8);
s9=calcS(9)-s0;
disp(s0,s9,9);
printf("Elapsed time: %f s\n",(clock()-t0)/CLOCKS_PER_SEC);
system("Pause");
return 0;
}
G-Spider
发表于 2010-11-30 10:02:23
:)
考虑到一个现象,发现做减法有个好处,我们知道欧拉公式,lim(1+1/2+1/3+……+1/n) =In(n)+ C
从n=8开始,可以满足本题的精度要求,所以有如下估计式
1/10000000+1/10000001+...+1/99999999=ln(99999999/9999999) 这个常数用系统自带的计算器就可以算出来
同理n=9以可以算出。
这样一来,时间缩短了1/3。以前上面的程序在我机子上要运行9.16s ,现在只需要2.59s
(小数点前6位均准确,所以下面的结果只输出了前6位(这无效率影响,上面的9.16s也是只输出前6位的时间))#include <stdio.h>
#include <time.h>
void disp(double s0,double s9,int n)
{
printf( "s0[%d] = %.6f\ns9[%d] = %.6f\ns0/s9 = %.6f\n\n\n", n,s0,n,s9,s0/s9);
}
double calcS(int n)//n=1,2,3,...,7
{
int e={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
int k;
double s=0.0;
for(k=e;k<e;k++)
s+=1.0/k;
return s;
}
//------------------------------
double search_1()
{
double s9,s0=0.0;
int k;
for (k=1;k<=8;k++)
s0+=1.0/k;
return s0;
}
double search_2()
{
double s9,s0=0.0;
int a,b,k=10;
for (b=1;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
double search_3()
{
double s9,s0=0.0;
int a,b,c,k=100;
for (c=1;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
double search_4()
{
double s9,s0=0.0;
int a,b,c,d,k=1000;
for (d=1;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
double search_5()
{
double s9,s0=0.0;
int a,b,c,d,e,k=10000;
for (e=1;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
double search_6()
{
double s9,s0=0.0;
int a,b,c,d,e,f,k=100000;
for (f=1;f<=8;f++,k+=10000)
for (e=0;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
double search_7()
{
double s9,s0=0.0;
int a,b,c,d,e,f,g,k=1000000;
for (g=1;g<=8;g++,k+=100000)
for (f=0;f<=8;f++,k+=10000)
for (e=0;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
double search_8()
{
double s9,s0=0.0;
int a,b,c,d,e,f,g,h,k=10000000;
for (h=1;h<=8;h++,k+=1000000)
for (g=0;g<=8;g++,k+=100000)
for (f=0;f<=8;f++,k+=10000)
for (e=0;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
double search_9()
{
double s9,s0=0.0;
int a,b,c,d,e,f,g,h,i,k=100000000;
for (i=1;i<=8;i++,k+=10000000)
for (h=0;h<=8;h++,k+=1000000)
for (g=0;g<=8;g++,k+=100000)
for (f=0;f<=8;f++,k+=10000)
for (e=0;e<=8;e++,k+=1000)
for (d=0;d<=8;d++,k+=100)
for (c=0;c<=8;c++,k+=10)
for (b=0;b<=8;b++,k+=1)
for (a=0;a<=8;a++,k++)
s0+=1.0/k;
return s0;
}
int main()
{
doubles0={0};
doubles9={0};
//由欧拉公式lim(1+1/2+...+1/n)=lnn+C(n->无穷,c为常数)
//从第n=8开始,n值以达到其极限的精度要求
//完全可以用估计式ln( n/m )=1/n +1/(n-1)+...+1/(m+1)
//这样明显减少计算时间
doubles_8=2.3025851829940506340183244547094;
doubles_9=2.3025851019940457335179917876844;
doublet0=clock();
s0=search_1();
s0=search_2();
s0=search_3();
s0=search_4();
s0=search_5();
s0=search_6();
s0=search_7();
s0=search_8();
s0=search_9();
s9=calcS(1)-s0;
disp(s0,s9,1);
s9=calcS(2)-s0;
disp(s0,s9,2);
s9=calcS(3)-s0;
disp(s0,s9,3);
s9=calcS(4)-s0;
disp(s0,s9,4);
s9=calcS(5)-s0;
disp(s0,s9,5);
s9=calcS(6)-s0;
disp(s0,s9,6);
s9=calcS(7)-s0;
disp(s0,s9,7);
//==================
s9=s_8-s0;
disp(s0,s9,8);
s9=s_9-s0;
disp(s0,s9,9);
printf("Elapsed time: %f s\n",(clock()-t0)/CLOCKS_PER_SEC);
system("Pause");
return 0;
}结果:
s0 = 2.717857
s9 = 0.111111
s0/s9 = 24.460714
s0 = 2.053992
s9 = 0.294418
s0/s9 = 6.976456
s0 = 1.817871
s9 = 0.489222
s0/s9 = 3.715842
s0 = 1.633364
s9 = 0.669671
s0/s9 = 2.439055
s0 = 1.469783
s9 = 0.832847
s0/s9 = 1.764771
s0 = 1.322783
s9 = 0.979807
s0/s9 = 1.350045
s0 = 1.190503
s9 = 1.112083
s0/s9 = 1.070516
s0 = 1.071452
s9 = 1.231133
s0/s9 = 0.870298
s0 = 0.964307
s9 = 1.338278
s0/s9 = 0.720558
Elapsed time: 2.599000 s
请按任意键继续. . .
gxqcn
发表于 2010-11-30 10:16:36
根据欧拉定理,所有的n位正整数的倒数和$=ln(10^n)-ln(10^(n-1))=ln10=2.3025850929940456840179914546844$
上述式子当n比较大时成立,也即 无心人 的 $s0+s9$
gxqcn 发表于 2010-5-19 14:59 http://bbs.emath.ac.cn/images/common/back.gif
楼上的与我在22#想的一致,所以的我程序特意输出了“s0+s9”
页:
1
2
3
4
5
6
7
8
[9]
10