大數階算之計算從入門到精通 序

2021-05-10 00:39:17 字數 765 閱讀 5584

摘要:本系列文章將深入**大數階乘之計算的各種演算法和實現,從最簡單的大家最容易想到的演算法,到使用各種大數乘法的版本,包括硬乘法、分治法、快速數論變換(fnt)和快速傅利葉變換(fft)的版本,甚至還有使用組合語言寫成的迷你版,使用斯特林公式的極速版。這些系列文章不僅分析和講述演算法思想,而且給出一些版本的部分或全部**,並****的優化方法。除了重點討論自己寫的程式外,該系列文章還會對網上的一些計算大數階乘的程式和**以及一些學術刊物上的**。

大數階乘的計算是乙個有趣的話題,從中學生到大學教授,許多人都投入到這個問題的探索和研究之中,並發表了他們自己的研究成果。如果你用階乘作關鍵字在google上搜尋,會找到許多此類文章,另外,如果你使用google學術搜尋,也能找到一些計算大數階乘的學術**。但這些文章和**的深度有限,並沒有給出乙個高速的演算法和程式。

我和許多對大數階乘感興趣的人一樣,很早就開始編制大數階乘的程式。從2023年開始寫第乙個大數階乘程式算起,到現在大約己有6-7年的時光,期間我寫了多個版本的階乘計算器,在階乘計算器的演算法**和程式的編寫和優化上,我花費了很大的時間和精力,品嚐了這一過程中的種種甘苦,我曾因乙個新演算法的實現而帶來速度的提公升而興奮,也曾因費了九牛二虎之力但速度反而不及舊的版本而懊惱,也有過因解乙個bug而通宵敖夜的情形。我寫的大數階乘的一些**片段散見於網際網路絡,而演算法和構想則常常縈繞在我的腦海。自以為,我對大數階乘計算器的演算法探索在深度和廣度上均居於先進水平。我常常想,應該寫乙個關於大數階乘計算的系列文章,一為整理自己的勞動成果,更重要的是可以讓同行分享我的知識和經驗,也算為it界做一點兒貢獻吧。

詳細內容請見原貼: 

階乘之計算從入門到精通 大數的表示

階乘之計算從入門到精通 大數的表示 1.大數,這裡提到的大數指有效數字非常多的數,它可能包含少則幾 十 幾百位十進位制數,多則幾百萬或者更多位十進位制數。有效數字這麼多的數隻具有數學意義,在現實生活中,並不需要這麼高的精度,比如銀河系的直徑有10萬光年,如果用原子核的直徑來度量,31位十進位制數就可...

階乘之計算從入門到精通 大數的表示

1.大數,這裡提到的大數指有效數字非常多的數,它可能包含少則幾 十 幾百位十進位制數,多則幾百萬或者更多位十進位制數。有效數字這麼多的數隻具有數學意義,在現實生活中,並不需要這麼高的精度,比如銀河系的直徑有10萬光年,如果用原子核的直徑來度量,31位十進位制數就可使得誤差不超過乙個原子核。2.大數的...

階乘之計算從入門到精通 近似計算之一

在 階乘之計算從入門到精通 菜鳥篇 中提到,使用double型數來計算階乘,當n 170,計算結果就超過double數的最大範圍而發生了溢位,故當n 170時,就不能用這個方法來計算階乘了,果真如此嗎?no,只要肯動腦筋,辦法總是有的。通過windows計算器,我們知道,171!1.24101807...