c语言高精度算法阶乘_问个关于高精度n阶乘的

问个关于高精度n阶乘的

虽然 燕子 和孔明 的算法与代码都是很经典的,但是做为菜鸟,简单易懂的就好

首先,定义两个整型的数组:

int fac[1000];暂且先设定是1000位,我称之为“结果数组”

int add[1000];我称之为“进位数组”

现在具体说明两个数组的作用:

1.fac[1000]

比如说,一个数5的阶乘是120,那么我就用这个数组存储它:

fac[0]=0

fac[1]=2

fac[2]=1

现在明白了数组fac的作用了吧。用这样的数组我们可以放阶乘后结果是1000位的数。

2.在介绍add[1000]之前,我介绍一下算法的思想,就以6!为例:

从上面我们知道了5!是怎样存储的。

就在5!的基础上来计算6!,演示如下:

fac[0]=fac[0]*6=0

fac[1]=fac[1]*6=12

fac[2]=fac[2]*6=6

3.现在就用到了我们的:“进位数组”add[1000].

先得说明一下:add就是在第2步中用算出的结果中,第i位向第i+1位的进位数值。还是接上例:

add[0]=0;

add[1]=1;  // 计算过程:就是 (fac[1]+add[0])  %  10=1

add[2]=0;  /*计算过程:就是 (fac[2]+add

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值