编写程序,求1/2+1/4+1/6+...的前n项和
答案:1 悬赏:0 手机版
解决时间 2021-12-22 13:14
- 提问者网友:放下
- 2021-12-22 04:00
编写程序,求1/2+1/4+1/6+...的前n项和
最佳答案
- 五星知识达人网友:慢性怪人
- 2021-12-22 04:47
这道题简单:
因为正常的判题系统1秒可以跑百10的7次方
所以,分两种情况:
(1)当 n<=10^6时,暴力求解,即:
double sum=0;
for(int i=2;i<=n;i+=2){
sum+=1.0/i;
}
(2)当n>10^6时,用欧拉公式,即:
利用“欧拉公式”(可以查阅相关书籍):1+1/2+1/3+……+1/n=ln(n)+C,C为欧拉常数 数值是0.5772…,例如:
则1+1/2+1/3+1/4+...+1/2007+1/2008=ln(2008)+C=8.1821(约)
而你此处,
1/2+1/4+1/6+... 可以看作( 1+ 1 / 2 + 1/4 +.... +1/(n/2) ) /2
也就是 ln(n/2)+c,c为常数。
以上,注意你的n应该是偶数吧,另外,10^6这个阈值不是固定的,当n越大时利用欧拉公式越度精确
因为正常的判题系统1秒可以跑百10的7次方
所以,分两种情况:
(1)当 n<=10^6时,暴力求解,即:
double sum=0;
for(int i=2;i<=n;i+=2){
sum+=1.0/i;
}
(2)当n>10^6时,用欧拉公式,即:
利用“欧拉公式”(可以查阅相关书籍):1+1/2+1/3+……+1/n=ln(n)+C,C为欧拉常数 数值是0.5772…,例如:
则1+1/2+1/3+1/4+...+1/2007+1/2008=ln(2008)+C=8.1821(约)
而你此处,
1/2+1/4+1/6+... 可以看作( 1+ 1 / 2 + 1/4 +.... +1/(n/2) ) /2
也就是 ln(n/2)+c,c为常数。
以上,注意你的n应该是偶数吧,另外,10^6这个阈值不是固定的,当n越大时利用欧拉公式越度精确
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯