在 C 语言中,可以使用数组来存储大数的阶乘。
我的参考:计算任意大数的阶乘,显示所有数字。这是很有帮助的帖子。
我对代码进行了一些小改动以转换为 C。
int max = 5000;
void factorial(int arr[], int n){//factorial in array
if (!n) return;
int carry = 0;
int i=max-1;
for (i=max-1; i>=0; --i){
arr[i] = (arr[i] * n) + carry;
carry = arr[i]/10;
arr[i] %= 10;
}
factorial(arr,n-1);
}
void display(int arr[]){// to print array
int ctr = 0;
int i=0;
for (i=0; i<max; i++){
if (!ctr && arr[i])
ctr = 1;
if(ctr)
printf("%d", arr[i]);
}
}
int main(){
int *arr = calloc(max, sizeof(int));
arr[max-1] = 1;
int num = 100;
printf("factorial of %d is: ",num);
factorial(arr,num);
display(arr);
free(arr);
return 0;
}
它的工作量为 100!见:这里
我想给你两个更有用的帖子的链接。
1)如何处理任意大整数建议GPU MP
2)C++ 程序计算大阶乘