大数阶乘输出1-40的阶乘 C代码
时间: 2024-10-06 13:01:57 浏览: 10
在C语言中计算大整数阶乘是一个复杂的问题,因为直接的递归或乘法可能会导致溢出。我们可以使用循环结构,并利用`long long`类型来存储中间结果。此外,可以考虑使用`ll_mul()`函数来进行长整数相乘。下面是一个简单的示例代码片段来计算并打印1到40的阶乘:
```c
#include <stdio.h>
#include "bigint.h" // 假设有一个自定义的库`bigint.h`处理大数运算
// 定义大数乘法函数
void ll_mul(bigint *result, const bigint *a, const bigint *b);
// 计算阶乘
void factorial(int n, bigint result) {
bigint fact = {1}; // 初始化阶乘为1
for (int i = 2; i <= n; ++i) {
ll_mul(&fact, &fact, &i); // 累乘
}
result = fact;
}
// 打印大数阶乘
void print_factorial(bigint num) {
int len = bigint_length(&num);
char factor[len + 1]; // 存储转换后的字符串
bigint_to_string(factor, &num, 10);
printf("%s\n", factor);
}
int main() {
for (int i = 1; i <= 40; ++i) {
bigint res;
factorial(i, res);
print_factorial(res);
}
return 0;
}