100的阶乘,C语言怎样求1到100的阶乘和?

2022-01-08 09:41:14 百科大全 投稿:一盘搜百科
摘要利用for循环计算1~100的阶乘100的阶乘,将1~100的阶乘累加到sum中就是所求。;#include<stdio.h>;void main();{;int i;;double t=1,sum=

利用for循环计算1~100阶乘100的阶乘,将1~100的阶乘累加到sum中就是所求。;#include<stdio.h>;void main();{;int i;;double t=1,sum=0; //由于100的阶乘int和long int都放不下.所以用double.;for(i=1;i<=100;i++) //从1循环到100.;{;t = t * i; //计算1~100的阶乘.;sum = sum + t; //将1~100的阶乘累加到sum中.;};printf(“%.0f “,sum); //输出sum.;};利用for循环计算1~100的阶乘,将1~100的阶乘累加到sum中就是所求。

100的阶乘,C语言怎样求1到100的阶乘和?插图

100的阶乘有24个结尾0。

具体算法如下:

一、首先确定5因子有多少:

在100内,因子是5的数有5, 10, 15, 20, 25… 总共有20个。但是25, 50, 75, 100都包含了2个5作为因子(25=5*5, 50=2*5*5),对于这些数,需要多数一次。所以总共有24个5因子。

从公式角度: 5因子的数目 = 100/5 + 100/(5^2) + 100/(5^3) + … = 24 (必须是整数)

二、确定2的因子有多少:

2, 4, 6, 8, 10, … 总共有100/2=50个2因子,100/4=25个4因子(要多计数一次),100/8=12个8因子(要多计数一次)所以2因子的数目 = 100/2 + 100/(2^2) + 100/(2^3) + 100/(2^4) + 100/(2^5) + 100/(2^6) + 100/(2^7) + … = 97

综上所述,共有24个5因子 和 97个2因子,所以能凑24 个 (2,5) 对。

综上所述100的阶乘也就有24个结尾零。

扩展资料:

用Excel快速计算阶乘:

1、excel2010为例子,首先启动excel2010,新建一个空白文档,选择工作表sheet1。

2、在单元格a1中输入文字内容“阶乘”,调整整体单元格大小。

3、选择单元格a2,执行插入-插入函数命令(或者点击“fx”),调出插入函数窗口。

4、选择类别设置为数学和三角函数,从选择函数中选择fact函数,点击确定。

5、在函数参数中输入任意一个数的阶乘,为了演示的便利我们输入参数为10,点击确定按钮。

举例说明算法:

1!+2!+3!+……+n!

=1+2*(1+3*(1+4*(1+5(1+.(1+(n-1)*(1+n)).))))

不过当n=100貌似会溢出.因此要实现一个大数乘法的函数。

#include<stdio.h>

void main()

{

long sum;

int n=100;

sum=n;

while(n!=1)

{

sum+=1;

sum*=n-1;//使用大数乘法函数替代这里的处理

n–;

}

printf(“%d/n”,sum);

}

100的阶乘int是存不了的,要用大数类:import java.math.BigDecimal;

public class Test {

public static void main(String args[]){

BigDecimal result= new BigDecimal(1);

for(int i=1;i<=100;i++){

BigDecimal i_value= new BigDecimal(i);

result = result.multiply(i_value);

}

System.out.println(“result=”+result);

}

}

TAGS: 阶乘  100  累加  所求  sum  循环  利用  include  
声明:一盘搜百科所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系 88888@qq.com