正文

大数阶乘2005-11-10 20:12:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/boxer/6751.html

分享到:

// 可以计算1~20000的阶乘。在PIII 1.13G CPU上计算20000!约需2.2秒。

#define nRadix 100000

#define MAXSIZE 16000

long in[MAXSIZE]= {0};

void fact(long n)
{
 long  m_nPrecision = 1;
 long  temp;
 long  carry = 0;
 int   i;

 for(i=0; i<MAXSIZE; ++i)
  in[i] = 0;
 in[0] = 1;

 for(i=2; i<=n; ++i)
 {
  for(long j=0; j<m_nPrecision; j++)
  {
   temp = in[j]*i+carry;
   carry = temp / nRadix;
   in[j] = temp - carry * nRadix;
  }
  temp = carry;
  while(temp > 0)
  {
   carry = temp / nRadix;
   in[m_nPrecision++] = temp-carry*nRadix;
   temp = carry;
  }
 }
}

阅读(4018) | 评论(2)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册