文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>大整数阶乘算法

大整数阶乘算法

时间:2010-09-30  来源:black_1890

#include "stdafx.h"
#include "stdlib.h"
#include "string"
int a[10000] = {0};//结果数组
void Calculate(int n)
{
int i;
int j;
int pos = 0;//当前结果数组a[]中最高的,a[pos]不是0值的下标
int x[10000] = {0};//处理进位的数组,
 a[0] = 1; //初值
for (i = 1; i <= n; ++i)
{
memset(x, 0, sizeof(int)*10000);
for (j = 0; j <= pos; ++j)
{
int k;
int t = 0;
int num = i*a[j]+ x[j];//第j位乘以i,再加上第j位的进位;
   k = num%10; //本次计算的余数
t = num/10; //本次的进位,这个值开始时可能较小,但是当计算的阶乘的数值增加时,该值会很大
//如果进位不用数组保存,会导致num溢出
   for (int m = j; t > 0; ++m)//处理进位,因为可能有溢出,所以用数组处理
{
x[m+1] = t%10; //如当前i==100,a[j]==8,i*a[j] == 800,这个会进两位;
t = t/10;
}
a[j] = k;
}
  for (int p = j; x[p] > 0; ++p,++pos)//剩余部分加入,最后一个值可能进多个位
a[p] = x[p];

for (int q = pos; q >=0; --q)//输出每次的阶乘结果
printf("%d", a[q]);
printf("\n");
}
}
void _tmain()
{
Calculate(60);
getchar();
}
相关阅读 更多 +
排行榜 更多 +
超级冒险王安卓版

超级冒险王安卓版

休闲益智 下载
玩具小镇手机版

玩具小镇手机版

休闲益智 下载
这一关特上头手机版

这一关特上头手机版

休闲益智 下载