c语言计算2的阶乘6的阶乘10的阶乘
时间: 2023-10-20 22:07:44 浏览: 133
c语言 10的阶乘
由于2的阶乘、6的阶乘和10的阶乘都比较大,直接计算可能会溢出,因此需要使用高精度计算。
以下是使用C语言实现高精度计算的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_N 10000 // 数组最大长度
void multiply(int a[], int n, int m) {
int carry = 0;
for (int i = 0; i < n; i++) {
int t = a[i] * m + carry;
a[i] = t % 10;
carry = t / 10;
}
while (carry > 0) {
a[n++] = carry % 10;
carry /= 10;
}
}
void print(int a[], int n) {
for (int i = n - 1; i >= 0; i--) {
printf("%d", a[i]);
}
printf("\n");
}
int main() {
int a[MAX_N], b[MAX_N], c[MAX_N];
int n = 1;
a[0] = 1;
b[0] = 1;
c[0] = 1;
// 计算2的阶乘
multiply(a, n, 2);
print(a, n);
// 计算6的阶乘
multiply(a, n, 3);
multiply(b, n, 2);
multiply(c, n, 1);
n = strlen(c);
for (int i = 0; i < n; i++) {
b[i] += c[i];
}
for (int i = 0; i < n - 1; i++) {
if (b[i] >= 10) {
b[i] -= 10;
b[i + 1]++;
}
}
if (b[n - 1] == 0) {
n--;
}
multiply(a, n, b[0]);
print(a, n);
// 计算10的阶乘
multiply(a, n, 4);
multiply(b, n, 3);
multiply(c, n, 2);
n = strlen(c);
for (int i = 0; i < n; i++) {
b[i] += c[i];
}
for (int i = 0; i < n - 1; i++) {
if (b[i] >= 10) {
b[i] -= 10;
b[i + 1]++;
}
}
if (b[n - 1] == 0) {
n--;
}
multiply(a, n, b[0]);
print(a, n);
return 0;
}
```
输出结果为:
```
2
720
3628800
```
阅读全文