大数阶乘

    技术2022-05-19  25

    这个大数阶乘这么简练。。。寒。。还是好好学习,天天向上吧、、、

    #include <stdio.h>   #define N 10000//计算N的阶乘,修改N的定义可计算10000以内任意数的阶乘   void main()   {       int a[N] = { 1 }, i, c, m, n;       for( m = 0, n = N ; n > 1; n-- )       {           for( i = c = 0; i <= m; i++ )           {               // 将若低位容不下,则通过 C 来倒到高位。由 (a + b)c = ac + bc               // 的结合律对每个位计算乘法                  a[i] = ( c += a[i] * n ) % 10000;               c /= 10000;               // 对于早先的 16 位机,int 最大为 32767,所以 10000               // 对于 32 位机,则这个容限可以更大           }           if ( a[i] = c ) m++;       }       printf ( "%d", a[m] );       for( c = m - 1; c >= 0; c-- )       {           printf( "d", a[c] ); // 因为是 1e4       }       printf ("/n");       //system ("pause");   } 


    最新回复(0)