📄 bigintfactoria.c
字号:
/* 大整数的阶乘 */
/* 化乘法为加法 */
#include <stdio.h>
#include <malloc.h>
#define MAXN 1000
void pnext(int a[], int k) /* 已知a中的k-1的阶乘,求出k的阶乘 */
{
int *b, m=a[0], i, j, r, carry;
b = (int *) malloc(sizeof(int)*(m+1));
for(i=1; i<=m; i++)
b[i] = a[i];
for(j=1; j<k; j++)
{
for(carry=0,i=1; i<=m; i++)
{
r = (i<=a[0] ? a[i]+b[i] : a[i]) + carry;
a[i] = r%10;
carry = r/10;
}
if(carry)
a[++m] = carry;
}
free(b);
a[0] = m;
}
void write(int *a, int k)
{
int i;
printf("%4d!=",k);
for(i=a[0]; i>0; i--)
printf("%d",a[i]);
printf("\n\n");
}
void main()
{
int a[MAXN], n, k;
printf("\nPlease enter the nummber n:");
scanf("%d", &n);
a[0] = 1;
a[1] = 1;
write(a,1);
for(k=2; k<=n; k++)
{
pnext(a,k);
write(a,k);
getch();
}
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -