1000!有几位数以及末尾有几个0_第1页
1000!有几位数以及末尾有几个0_第2页
1000!有几位数以及末尾有几个0_第3页
1000!有几位数以及末尾有几个0_第4页
1000!有几位数以及末尾有几个0_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1000!有几位数?1000!有几位数,为什么?1000!用科学计数法是ax10Ax,其中1<a<10,x为一特定整数,10Ax表示10的x次方。要求的是x+1如:3189=3.189x10A33189的位数是3+1=4当1<a<10时,0<lg(a)<1故有lg(ax10Ax)=lg(a)+x即lg(ax10Ax)的整数部分即为x同样lg(1000!)+1的整数部分为要求的整数lg(1000!)=lg(a)+lg(10Ax)=lg(a)+xlg(1000!)=lg(1000*999**2*1)=lg(1000)+lg(999)++lg(1)lg(1000!)=lg(1000)+lg(999)++lg(1)(为保证1000个小数相加不致产生误差每个数必须精确到0.0001以上,下例程序中故使用float)x=lg(1000)+lg(999)+....+lg⑴的整数部分这个就可以用程序实现了/*lg.c*/#include<stdio.h>#include<math.h>intmain(){inti;doublesum=0;for(i=1;i<=1000;i++){sum=sum+log10(i);}printf("The'1000!has%d'snumbers.\n",(int)sum+1);}

在估算出位数后,就可以进一步计算其具体的值:用数组的方法解决大数、巨数的阶乘结果越界的问题。具体算法中有最朴实的乘法运算思想,请各位细细体味。#include<stdio.h>intmain()//阶乘大小//阶乘大小//从键盘接收阶乘大小//确保保存最终运算结果的数组足够//进位//位数//将结果先初始化为1//阶乘的任一元素与临时结果的某位intn;printf("请输入n的大小:");scanf("%d",&n);inta[200];大intcarry;intdigit=1;a[0]=1;inttemp;的乘积结果for(inti=2;i<=n;++i)//开始阶乘,阶乘元素从2开始依次“登场”{//按最基本的乘法运算思想来考虑,将临时结果的每位与阶乘元素相乘for(intj=1,carry=0;j<=digit;++j){//相应阶乘中的一项与当前所得临时//更新临时结果的位上信息//看是否有进位//如果有进位temp=//相应阶乘中的一项与当前所得临时//更新临时结果的位上信息//看是否有进位//如果有进位a[j-1]=temp%10;carry=temp/10;}while(carry)

a[++digit-1]=a[++digit-1]=carry%10;//新加一位,添加信息。位数增1carry/=10;//carry/=10;//显示结果printf("结果是:\n%d!=//显示结果for(inti=digit;i>=1;--i){printf("%d",a[i-1]);}return0;【2】1000的阶乘(1000!)结果有几个0(10000!--->2499=[10000/5]+[10000/25]+[10000/125]+[10000/625]+[10000/3125])packagecom.hisen.test;2.publicclassJC{publicstaticvoidmain(String[]args){intx=10000;intcount=0;while(x>0)8.9.count=count+x/5;

9.count=count+x/5;10.x=x/5;10.}System.out.println(count);}}复制代码利用到了一个数学知识令f(x)表示正整数x末尾所含有的0”个数,则有:当0<n<5时,f(n!)=0;当n>=5时,f(n!)=k+f(k!),其中k=n/5(取整)。通俗的解释就是:求5...所有5都被2拉去产生0了问题:的阶乘中的末尾有多少个例如末尾有个分析想到这个问题,有人可能第一反应就是现求出然后再根据求出的结果,最后得出的末尾有多少个。但是转念一想,会不会溢出,等等。其实,从"那些数相乘可以得到10这"个角度,问题就变得比较的简单了。首先考虑,如果的阶乘为和的次方的乘积,那么末尾就有的。如果将的阶乘分解后,那么的阶乘可以分解为:的次方,的次方,的次方,的成绩。由于所以只能和和有关,每一对和相乘就可以得到一个,于是不难看出大于,因为被整除的频率比被整除的频率高的多。所以可以把公式简化为

由上面的分析可以看出,只要计算处的值,就可以得到末尾的个数方法一要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论