精度計算 大數階乘

2021-07-02 17:35:39 字數 530 閱讀 2938

本演算法的目的在於計算乙個比較大的數的階乘,由於得到的結果比較大,是現有的資料型別無法儲存的,所以我決定將結果儲存在乙個long a陣列中。

我們的思路是把每4位數看做陣列的乙個元素來儲存,例如:個、十、百、千存在a[0],萬、十萬、百萬、千萬存在a[1]以此類推。

我們用10的階乘來模擬一下求結果大於4位數階乘的過程,9的階乘為362880,而10的階乘為9的階乘乘以10,在計算完9的階乘時a[0] = 2880,a[1]=36,因為362880*10 = (36*10+2880*10/10000)*10000+28800%10000 = 3628800。同理其他高階的數的計算過程和這個大同小異了

下面是我的c語言實現過程:

void factorial(int n)

printf("\n");

if(c>0)

}printf("\n%ld",a[m]);

for(i=m-1;i>=0;i--)

printf("%4.4ld",a[i]);

}

高精度大資料 階乘計算

問題描述 輸入乙個正整數n,輸出n 的值。其中n 123 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相應的...

9 大數,高精度計算 大數階乘

大數是演算法語言中的資料型別無法表示的數,其位數超過最大資料型別所能表示的範圍,所以,在處理大數問題時首先要考慮的是怎樣儲存大數,然後是在這種儲存方式下其處理的實現方法。一般情況下大數的儲存是採用字元陣列來儲存,即將大數當作乙個字串來儲存,而對其處理是按其處理規則在陣列中模擬實現。階乘問題比較典型,...

高精度之大數階乘

大數階乘 序言 今天是我寫部落格的第二天,差點忘了寫,反思一下,下次要早點發。大數階乘也是高精度題目中的入門題。它的主要思路和上一次我發的大數加法相似,也是以陣列來按位處理資料。他的難度級別應該比大數加法還低一點。他的輸入很簡單,也不需要定義多餘的輔助陣列。只需要將需要求階乘的數先輸入到陣列中。再將...