首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

大数运算(7)——大数阶乘(求阶乘)

对于大数来说,一个数的阶乘是非常大的,同样,一个int类型的整数,他的阶乘就有可能会很大。 就拿50来说,他的阶乘位数是65位,就已经远远超过了long long int类型的最大值。...这时候,我们要通过字符串的方法,来进行阶乘的运算。 当然,需要注意的是: 我们所求一个数的阶乘,这个数是在int范围内的,5000的阶乘位数是16326位。...其方法是: 首先,我们是可以先求一定范围内的最大值的阶乘位数,以便于申请数组空间的确定。 对于大数问题,我们要有将大数与数组结合的思想,可以利用类似于人工求值的方法求出有关大数的问题。...对于大数阶乘来说,最重要的是如何将每个数的每位数与相对应的数组元素储存起来,就如算50的阶乘,我们要先从1开始乘: 1*2=2,将2存到a[0]中, 接下来是用a[0]*3; 2*3=6,将6储存在

91110

大数阶乘算法

一:精度要求较低的阶乘算法 如果只是要求算法的速度,而对精度要求比较低的话可以直接使用,斯特林公式计算n! 斯特林公式如下: n!...二:高精度阶乘算法 算法1:硬乘 最容易想到的自然是硬乘。模拟人工计算乘法的方法,一位位的乘。以AB*C为例,其中A,B,C各占一个基数位,以N进制为例。...第二种算法表明,在计算阶乘时,通常的方法(先计算出n的阶乘,再用一位数乘以多位数的方法计算(n+1)的阶乘,再计算n+2的阶乘)不是最优的,更优化的算法是,计算出相邻的几个数的积(称之为部分积),用部分积乘以部分积的这种多位数乘以...用这样的数组我们可以放阶乘后结果是1000位的数。 2.在介绍add[1000]之前,我介绍一下算法的思想,就以6!为例: 从上面我们知道了5!是怎样存储的。 就在5!...6.总结一下,可以发现,我们把阶乘转化为 两个10以内的数的乘法,还有两个10以内的数的加法了。 因此,不管再大的数,基本上都能算出了,只要你的数组够大就行了。

73431

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券