高精度階乘(c語言)

2021-10-13 00:25:10 字數 819 閱讀 2517

在刷題時偶然遇到了高精度階乘的問題,於是立即自學了一下,在此作簡要總結。

提出背景:普通的階乘演算法(不斷用i*(i+1)迴圈)對於較大數的階乘,由於運算結果位數過大,會造成溢位,使結果精度低。此時引出高精度計算階乘的方法。

實現思路:用陣列倒序儲存每一位的數,手動調整進製,再倒序輸出

程式**:

#include

#define len 100000

void

factorial

(int

* p,

int x)

;int

main

(int argc,

char

* ar**)

;int x,i,j;

int* p=num;

scanf

("%d"

,&x)

;factorial

(p,x)

;for

(j=len-

1;j>=

0;j--)if

(*(p+j)

>0)

break

;for

(i=j;i>=

0;i--

)printf

("%d",*

(p+i));

}void

factorial

(int

* p,

int x)

//計算x的階乘,存入陣列num

}}

高精度階乘

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

高精度階乘

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

階乘之和(高精度)

題目描述 用高精度計算出s 1 2 3 n n 50 其中 表示階乘,例如 5 5 4 3 2 1。輸入格式 乙個正整數n。輸出格式 乙個正整數s,表示計算結果。輸入輸出樣例 輸入3輸出9 過載運算子 include include include include using namespace s...