1000!有幾位數(shù)以及末尾有幾個(gè)0_第1頁(yè)
1000!有幾位數(shù)以及末尾有幾個(gè)0_第2頁(yè)
1000!有幾位數(shù)以及末尾有幾個(gè)0_第3頁(yè)
1000!有幾位數(shù)以及末尾有幾個(gè)0_第4頁(yè)
1000!有幾位數(shù)以及末尾有幾個(gè)0_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1000!有幾位數(shù)?1000!有幾位數(shù),為什么?1000!用科學(xué)計(jì)數(shù)法是ax10Ax,其中1<a<10,x為一特定整數(shù),10Ax表示10的x次方。要求的是x+1如:3189=3.189x10A33189的位數(shù)是3+1=4當(dāng)1<a<10時(shí),0<lg(a)<1故有l(wèi)g(ax10Ax)=lg(a)+x即lg(ax10Ax)的整數(shù)部分即為x同樣lg(1000!)+1的整數(shù)部分為要求的整數(shù)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個(gè)小數(shù)相加不致產(chǎn)生誤差每個(gè)數(shù)必須精確到0.0001以上,下例程序中故使用float)x=lg(1000)+lg(999)+....+lg⑴的整數(shù)部分這個(gè)就可以用程序?qū)崿F(xiàn)了/*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);}

在估算出位數(shù)后,就可以進(jìn)一步計(jì)算其具體的值:用數(shù)組的方法解決大數(shù)、巨數(shù)的階乘結(jié)果越界的問題。具體算法中有最樸實(shí)的乘法運(yùn)算思想,請(qǐng)各位細(xì)細(xì)體味。#include<stdio.h>intmain()//階乘大小//階乘大小//從鍵盤接收階乘大小//確保保存最終運(yùn)算結(jié)果的數(shù)組足夠//進(jìn)位//位數(shù)//將結(jié)果先初始化為1//階乘的任一元素與臨時(shí)結(jié)果的某位intn;printf("請(qǐng)輸入n的大小:");scanf("%d",&n);inta[200];大intcarry;intdigit=1;a[0]=1;inttemp;的乘積結(jié)果for(inti=2;i<=n;++i)//開始階乘,階乘元素從2開始依次“登場(chǎng)”{//按最基本的乘法運(yùn)算思想來(lái)考慮,將臨時(shí)結(jié)果的每位與階乘元素相乘for(intj=1,carry=0;j<=digit;++j){//相應(yīng)階乘中的一項(xiàng)與當(dāng)前所得臨時(shí)//更新臨時(shí)結(jié)果的位上信息//看是否有進(jìn)位//如果有進(jìn)位temp=//相應(yīng)階乘中的一項(xiàng)與當(dāng)前所得臨時(shí)//更新臨時(shí)結(jié)果的位上信息//看是否有進(jìn)位//如果有進(jìn)位a[j-1]=temp%10;carry=temp/10;}while(carry)

a[++digit-1]=a[++digit-1]=carry%10;//新加一位,添加信息。位數(shù)增1carry/=10;//carry/=10;//顯示結(jié)果printf("結(jié)果是:\n%d!=//顯示結(jié)果for(inti=digit;i>=1;--i){printf("%d",a[i-1]);}return0;【2】1000的階乘(1000!)結(jié)果有幾個(gè)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ù)制代碼利用到了一個(gè)數(shù)學(xué)知識(shí)令f(x)表示正整數(shù)x末尾所含有的0”個(gè)數(shù),則有:當(dāng)0<n<5時(shí),f(n!)=0;當(dāng)n>=5時(shí),f(n!)=k+f(k!),其中k=n/5(取整)。通俗的解釋就是:求5...所有5都被2拉去產(chǎn)生0了問題:的階乘中的末尾有多少個(gè)例如末尾有個(gè)分析想到這個(gè)問題,有人可能第一反應(yīng)就是現(xiàn)求出然后再根據(jù)求出的結(jié)果,最后得出的末尾有多少個(gè)。但是轉(zhuǎn)念一想,會(huì)不會(huì)溢出,等等。其實(shí),從"那些數(shù)相乘可以得到10這"個(gè)角度,問題就變得比較的簡(jiǎn)單了。首先考慮,如果的階乘為和的次方的乘積,那么末尾就有的。如果將的階乘分解后,那么的階乘可以分解為:的次方,的次方,的次方,的成績(jī)。由于所以只能和和有關(guān),每一對(duì)和相乘就可以得到一個(gè),于是不難看出大于,因?yàn)楸徽念l率比被整除的頻率高的多。所以可以把公式簡(jiǎn)化為

由上面的分析可以看出,只要計(jì)算處的值,就可以得到末尾的個(gè)數(shù)方法一要

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論