#include <stdio.h>
#define SIZE 10
#define BASE 10000000
long factrial[SIZE] = { 0 };
void print_factrial(void) {
long *p = factrial;
for (; p < factrial + SIZE && *p == 0; p++)
printf(" ");
printf("%7ld", *p++);
for (; p < factrial + SIZE; p++)
printf("%07ld", *p);
}
void product(int i) {
long *p = factrial;
for (; p < factrial + SIZE; p++)
*p *= i;
for(p--; p > factrial; p--) {
*(p-1) += *p / BASE;
*p %= BASE;
}
}
int main(void) {
int i;
factrial[SIZE-1] = 1;
for (i = 1; i <= 53; i++) {
product(i);
printf("%2d!=", i);
print_factrial();
putchar('\n');
}
return 0;
}