高精度阶乘计算

本文介绍了如何进行高精度的阶乘计算,当数值超出long long范围时,使用竖式运算思想,通过数组存储大数的每一位进行计算。文中重点讨论了高精度乘低精度的情况,详细阐述了将数倒序存入数组,逐位相乘并进位的算法流程,最后提供了代码示例。
摘要由CSDN通过智能技术生成

高精度阶乘计算

本文目的给大家介绍一下高精度的阶乘计算。
何为高精度?高精度意思不是精确到小数点多少多少位,而是指数据很大很大,超过了long long的范围,导致C/C++无法进行计算,由于long long 的范围还是比较小的,所以必须要有一种计算高精度的方法来解决这个问题。
高精度乘法的思想呢是来自于竖式运算,还记得乘法里面的竖式计算吗,比如计算789x123,你会怎么算?
在这里插入图片描述
我想应该是要这样子去计算吧,所以我们高精度的计算也就是这么来的。竖式计算过程如下:
在这里插入图片描述
我们在计算的过程中呢,本质上是利用789去乘以123的每一位,并将123的每一位换为乘出来的结果,最后再考虑进位。(记住是最后才考虑进位,而不是一边乘一边考虑进位,因为博主曾经在上面犯过错)这样子就可以得到我们想要的结果。

那么在程序中要去如何实现这个过程呢?

首先我们要明确我们计算的是高精度,用传统的int或long long都不行,这个时候我们就要用到int类型甚至long long 类型的数组,一般都是用int。将每个数字的每一位数都存放在数组里面凑成一个数组来表示我们的数,这样子就可以大数计算的效果。比如我们把123456789用长度为9的数组来存放,第一位存放1,第二位存放2,第三位存放3,以此类推,这样我们的大数就存放在了数组里面。(当然了实际运算中常采用倒序存放,即把9存放在第一位,当然这也只是一种个人习惯)
因为本文章讨论的是高精度阶乘计算,而不是高精度乘法计算,所以我们只考虑高精度乘低精度的情况。
首先我们先将一个数,无论多大,倒序存放在一个整型数组里面(当然顺序也可以,个人习惯,操作上面会有一点点差异,但是不影响结果),然后我们再依次用每个数去乘以它的每一位,等待它的每一位都被这个数乘完之后,然后再依次进位,再循环进行下一次乘法,由于我这边是采取倒序存放的&#x

  • 17
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值