c语言实现n!算法

最近一面学习数据结构,一面在做些c语言的题目。这个题目前些天碰到,和同学讨论了下。于是就用c语言实现n!(n=10000)

 1 #include<stdio.h>
 2 #define MAX 50000
 3 
 4 int main(void)
 5 {
 6     int a[MAX] = {0};   //置数组每一位为0
 7     a[MAX-1] = 1; 
 8 
 9     int k, i;              //k遍历阶乘,i作为数组下标
10    int go = 0;         //go作为进位
11 
12    for (k=2; k<=10000; k++)   //每乘一个数,遍历整个数组
13         for (i=MAX-1; i>=0; i--)    //从数组最后一位放起
14         {
15             int temp;
16             temp = a[i] * k + go;   //乘法原理
17             a[i] = temp % 10;  
18             go = temp / 10;
19         }
20     i = 0;
21     while (!a[i++])     //过滤掉数组前面的0
22         ;
23     k = i;
24     for (i--; i<MAX; i++)  //注意i--操作,前面多过滤一位
25     {
26         if (i % 20 == 0)   //每二十位换一行
27             printf("
");
28         printf("%d", a[i]);
29     }
30     printf("10000!共有%d位。
", MAX - k + 1);
31     return 0;
32 }
原文地址:https://www.cnblogs.com/rookiefly/p/3428152.html