C语言对自然对数的底数e精确计算

                

        超越数是不能作为有理系数多项式方程的根的数 ,即不是代数数的数。由欧拉所说的:“它们超越代数方法所及的范围之外。”而得名。

        虽然存在大量的超越数,但构造一个超越数或论证某个数是超越数就极为困难,现在只有极少的的数被证明了超越数,其中就有我们今天要计算的自然对数的底数e;

e在自然科学的应用及其广泛,不少都要采用e的更精确值进行计算,这时候我们就可以通过计算机对底数e进行精确值的计算,e的计算公式如下: 

        e=lim(1+1/n)^n=1/(0!)+1/(1!)+1/(2!)+1/(3!)+1/(4!)+1/(5!)+… =∑1/(n!),n∈N

这里我们借用该题来回顾下循环结构的三种循环语句的复习和应用;代码如下:

 

#include<stdio.h>
#include<math.h>

int main()
{
	double e = 1;
	double sum=1;
	int i=1;
	/*法一while(1/sum >pow(10,-11))
	{ 
		sum *= i;
		e += 1/sum;
		i++;
		
	}
	法二 do{	
		i++;
		e += 1/sum;
		sum *= i;
	}while(1/sum >pow(10,-11));   do while 和while的区别在于while是先判断再做,
								  而do while 是先做一遍后再判断是否继续.所以如果是无论如何都 
                                  要做一遍则应选择do while.
								  其他情况俩种都没有任何区别*/
	//法三:
	for (i=1;(1/sum >pow(10,-11));i++)  //也可以是for(int i=1;(1/sum >pow(10,-11));i++)
	{	 		                        //但部分编译器不兼容,运行可能会报错															
		  sum *= i;					    
		  e += 1/sum;
	}
	printf("e = %.10lf\n",e);
	
	return 0;
}	    /*由上for循环等价于这样               while(1/sum >pow(10,-11))  {	sum *= i; 
		其中i=1是给循环的已知条件.i等于多少它在for循环里起始值就是多少,	      e += 1/sum;  
		如果我写了i=3,哪怕你之前int i=1,那i的开始的值也只会是3,当然如果我们	        i++;}       
		不写i=多少,就只有i,那程序会默认之前的int i=1,最后的i++相当于将{}最后要执行的程序	    		
		放到了()里,所以哪怕已经得出了所要e的值,i++仍旧会执行一次;这样一来我们不也可以
		参照法二的运行顺序来设置for(i=1;(1/sum >pow(10,-11));sum *= i){ i++;
												                        e += 1/sum;} */
	

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值