C#40提供BigInteger類 支持大數(shù)運算_第1頁
C#40提供BigInteger類 支持大數(shù)運算_第2頁
C#40提供BigInteger類 支持大數(shù)運算_第3頁
C#40提供BigInteger類 支持大數(shù)運算_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

C#4.0提供BigInteger類支持大數(shù)運算2011年10月20日10:23來源:博客園作者:LoveJenny編輯:皮麗華評論:0條【IT168資訊】前段時間,有個同事說“300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001”是個質(zhì)數(shù)。直覺告訴我,光是在中間加幾個0,在后面加個1,估計不是質(zhì)數(shù)。有很多面試題,都會要面試者去做一些關(guān)于大數(shù)的運算,例如在這里就有判斷上面這個數(shù)是不是質(zhì)數(shù)的情況。很明顯,Integer,Long都是不能來處理如此巨大的數(shù)的。在.netframework4.0中,System.Numerics.dll中提供了BigInteger類。使用這個類可以很方便的解決這個問題。判斷n是質(zhì)數(shù)的方法:1:如果是偶數(shù),肯定不是質(zhì)數(shù)2:如果能夠被小于或等于Sqrt(n)的數(shù)除盡,則不是質(zhì)數(shù)。代碼如下:privatestaticboolIsPrime()(stringlargeNumber=@〃30000000000000000000000...000000001”BigIntegerbigInteger=BigInteger.Parse(largeNumber);if(bigInteger.IsEven)(returnfalse;}for(BigIntegerbi=3;BigInteger.Pow(bi,2)<=bigInteger;bi+=2)(if(bigInteger%bi==0)(returnfalse;}}returntrue;}本來for循環(huán)中的代碼應(yīng)該是for(BigIntegerbi=3;bi<=BigInteger.Sqrt(bigInteger);bi+=2)(if(bigInteger%bi==0)(returnfalse;}}可惜的是BigInteger不支持Sqrt方法,所以換用for(BigIntegerbi=3;BigInteger.Pow(bi,2)<=bigInteger;bi+=2)結(jié)果如下圖:可以知道”30000000000000000000000000..1”不是質(zhì)數(shù),可以被13除盡。2:C語言中有道經(jīng)典的題目是求100!后面有幾個0.如果你不知道BigInteger的話,應(yīng)該怎么做?100!可以理解為IT1舶網(wǎng)甘100!可以理解為IT1舶網(wǎng)甘U/WWIT1靜!miv因為偶數(shù)比5要多,所以i值比j值多很多,所以求100!有多少個0,可以認(rèn)為是求j的值當(dāng)然也可以用公式Sum=[100/5]+[100/(5"2)]+[100/(5"3)]=20+4+0=24;如果你既沒有思路,也沒有公式,腦子里面只有一個念頭:1*2*3*4*5*..*100的for循環(huán),然后統(tǒng)計0的數(shù)量的話,在4.0中也可以實現(xiàn),雖然好像速度慢了點,不過也還是可以得到答案的:代碼如下:&iglntegersum=1;for(BigTnt-egerbi=1;bi<=106;bi+*){sum*=bi;}stringstrSum=sum^ToString();文本可視化工具r^i盲表達(dá)式(E):strSum值(V):933262154439441526816992386562667&0490715968264I?3816X468592963895217599993229915齡陽4T639761565182862536979208272237&82511852109163&40060W&IT1睥網(wǎng)站W(wǎng)WW.IT168.CON統(tǒng)計的代碼如下:運行結(jié)果如下:intcount=0;for(inti=strSum.Length-1;i>=0;i--)if(strSum[i]

溫馨提示

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

最新文檔

評論

0/150

提交評論