高精度計(jì)算器 目前圓周率已經(jīng)達(dá)到10萬億位了,為何超級電腦還在不停地計(jì)算圓周率?計(jì)算圓周率有什么用處?
目前圓周率已經(jīng)達(dá)到10萬億位了,為何超級電腦還在不停地計(jì)算圓周率?計(jì)算圓周率有什么用處?圓周率π是周長和直徑的比值,在物理和數(shù)學(xué)中有著十分重要的地位,但圓周率在一般應(yīng)用中取3.14就夠了,在高精度的航
目前圓周率已經(jīng)達(dá)到10萬億位了,為何超級電腦還在不停地計(jì)算圓周率?計(jì)算圓周率有什么用處?
圓周率π是周長和直徑的比值,在物理和數(shù)學(xué)中有著十分重要的地位,但圓周率在一般應(yīng)用中取3.14就夠了,在高精度的航天和其他領(lǐng)域, 圓周率取到15或者16位就足夠用了,精度完全能滿足需要,圓周率取的越“長”,精度就越高,用40位圓周率計(jì)算整個(gè)可觀測宇宙大小的話,誤差只有半個(gè)氫原子。
人類文明很早就開始求圓周率了,但是人工方式終究是費(fèi)時(shí)費(fèi)力進(jìn)展緩慢的,1949年人類第一臺(tái)計(jì)算機(jī)ENIAC用70個(gè)小時(shí)把圓周率算到了2017位,此后人類的圓周率位數(shù)便開始了爆炸性增長,1973年圓周率突破了100萬位,好事者還把它印成了書,1989年突破十億,1995年突破64億,目前圓周率位數(shù)已經(jīng)達(dá)到了1000萬億位以上了,現(xiàn)在的圓周率唯一的作用就是測試計(jì)算機(jī)性能,圓周率的位數(shù)已經(jīng)越來越取決于計(jì)算機(jī)的開機(jī)時(shí)間了。
人類雖然已經(jīng)無法和計(jì)算機(jī)比了,但也找到了關(guān)于圓周率的另一個(gè)活動(dòng),目前人工背誦圓周率的記錄的保持者是呂超,他用24小時(shí)背誦了圓周率小數(shù)點(diǎn)后67890位,但有人吹牛說自己對圓周率可以倒背如流...
關(guān)于圓周率還有一個(gè)有趣的事實(shí),那就是正規(guī)數(shù),圓周率小數(shù)點(diǎn)后的每一個(gè)數(shù)字的出現(xiàn)概率都是相同的,這說明圓周率中包含過去現(xiàn)在和未來的所有數(shù)字組合,我們每個(gè)人都身份證號(hào)和銀行卡密碼都能在圓周率中被找到,但我們可能無法把它們提取出來。
早在1909年就有人提出了“無限猴子打字機(jī)”想法,意思是說如果無限只猴子在無限多的打字機(jī)上面亂敲亂打,那么它們早晚有一天能打出世界上所有的文學(xué)作品,甚至是還沒有問世的文學(xué)作品,劉慈欣當(dāng)年在《詩云》中描述了一個(gè)宇宙神級文明的故事,這個(gè)文明在最后為了打敗李白而把古往今來所有的詩都寫了出來,但寫法只是將漢字的所有排列組合都試了一遍而已。
為什么Python不需要定義int double char等類型且可以直接高精度算法,而C 需要?
這是python比c“高級”的一個(gè)特性,使用變量之前不需要定義變量的類型。這讓初學(xué)者感覺非常方便,但對于“老碼農(nóng)”來說,卻存在很大的一個(gè)坑,只有在實(shí)際項(xiàng)目中使用過的人才深有體會(huì)。
以前我學(xué)c的時(shí)候,也感覺定義一個(gè)變量,非要先給他定義一個(gè)類型非常麻煩,因?yàn)橥壹热皇褂靡粋€(gè)變量,那么我就敢保證不會(huì)在他是什么類型上出錯(cuò),感覺先定義他的類型很多余。
直到我做了幾個(gè)項(xiàng)目之后才發(fā)現(xiàn),使用變量前先定義他的類型,是多么的有必要。
最常見的例子就是在實(shí)際的項(xiàng)目中,為了便于之后的維護(hù),那么變量名都應(yīng)該有一個(gè)便于理解的名稱,比如teacher,中文意思是老師,那么我會(huì)用這個(gè)詞作為定義老師的一個(gè)變量。
但如果在之后的引用中,你寫成techer,在python中是不會(huì)報(bào)錯(cuò)的。python會(huì)把他定義為一個(gè)新的變量,這會(huì)導(dǎo)致如果程序沒運(yùn)行到這一行,你永遠(yuǎn)不知道他錯(cuò)了。或者運(yùn)行到這一行,程序可以正常運(yùn)行,但永遠(yuǎn)拿不到正確的結(jié)果。
這會(huì)讓你花大量的時(shí)間來排查,這個(gè)時(shí)間遠(yuǎn)遠(yuǎn)要比在使用變量前定義他是int還是str要多得多!
而在c中,這個(gè)變量沒有被定義過,當(dāng)程序進(jìn)行編譯的時(shí)候,就會(huì)報(bào)錯(cuò)。這可以省去非常多不必要的麻煩。
有時(shí)候不是你仔細(xì)就不會(huì)出錯(cuò),畢竟在項(xiàng)目開發(fā)中,你還需要和別人配合寫代碼,你不能保證別人不寫錯(cuò)。
python的語法雖然比c簡單,但不一定簡單都是好的,對于程序來說,“規(guī)則”比簡便更高效。
求助高精度除高精度的算法?
高精度除法就是高精度減法的深一層次,其實(shí)高精度的思想就是我們平時(shí)算題時(shí)列豎式一樣,比如加法從右到左一位一位的算大于10就進(jìn)位,減法一樣,只是如果碰到了不夠減的情況把加法的進(jìn)位的變量變成借位的變量(例如t為此變量,加法在執(zhí)行時(shí),a,b兩個(gè)變量為兩個(gè)數(shù)的同一位上的兩個(gè)數(shù),若a b>10 則t-->1 如果是減法 若a-b<0 t--> -1 每一次運(yùn)算都要加上t當(dāng)然做了判斷后要把哪一位相加得到的答案進(jìn)行處理(加法-10 減法 a 10-b)。 至于你的這道題我也不知道應(yīng)該怎么處理,但是我認(rèn)為用高精度會(huì)不會(huì)太復(fù)雜了,一般的求最大公約數(shù)和最小公倍數(shù)用輾轉(zhuǎn)相除法,我想這道題應(yīng)該是這種方法的改進(jìn)形式是最好的方法。