u Calculate e

本文介绍了一种通过数学公式计算自然对数的底数e的近似值的方法,并提供了一个C++程序实现,该程序能够输出e的近似值随着n从0到9的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FJNU.1093
PKU.1517

Description
A simple mathematical formula for e is
e=Σ0<=i<=n1/i!
where n is allowed to go to infinity. This can actually yield very accurate approximations of e using relatively small values of n.

Input
No input

Output
Output the approximations of e generated by the above formula for the values of n from 0 to 9. The beginning of your output should appear similar to that shown below.

Sample Input
No input

Sample Output
n e
- -----------
0 1
1 2
2 2.5
3 2.666666667
4 2.708333333
...

Source
Greater New York 2000

My Program

#include<iostream>
#define N 10
using namespace std;

int main()
{
    
int i,j,m,k=1;
    
double e=1.0;
    
long n;
    cout
<<"n e"<<endl;
    cout
<<"- -----------"<<endl;
    
for(i=0;i<N;i++)
    
{
        cout
<<i<<" ";
        
if(i!=0)
        
{
            k
*=i;
            e
+=1.0/(k*1.0);
        }

        m
=(int)e;
        
if(m==e)
            printf(
"%d",m);
        
else
        
{
            n
=(e-m)*1000000000;
            j
=0;
            
while(n%10==0)
            
{
                n
/=10;
                j
++;
            }

            
switch(j)
            
{
            
case 1:printf("%.8lf",e);break;
            
case 2:printf("%.7lf",e);break;
            
case 3:printf("%.6lf",e);break;
            
case 4:printf("%.5lf",e);break;
            
case 5:printf("%.4lf",e);break;
            
case 6:printf("%.3lf",e);break;
            
case 7:printf("%.2lf",e);break;
            
case 8:printf("%.1lf",e);break;
            
default:printf("%.9lf",e);
            }

        }

        cout
<<endl;
    }

    
return 0;
}

YOYO's Note: 
我不知道输出的格式能不能按变量调的?
所以只好用case……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值