100的阶乘,C语言怎样求1到100的阶乘和?
利用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的阶乘有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);
}
}