斯特林公式 ——Stirling公式(取N阶乘近似值)
斯特灵公式是一条用来取n阶乘近似值的数学公式。一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用。从图中可以看出,即使在n很小的时候,斯特灵公式的取值已经十分准确。
公式为:
从图中看出,对于足够大的整数n,这两个数互为近似值。更加精确地:
或者
-
这个公式,以及误差的估计,可以推导如下。我们不直接估计n!,而是考虑它的自然对数:
-
按一般方法计算N的阶乘,其时间复杂度为O(N): N!= 1 * 2 * 3 * 4 * 5 * ............ * N;
-
如果要计算N后得到的数字为几位数,则我们可以知道其位数等于lgN!+1;
则:
但是当N很大的时候,我们可以通过斯特林公式进行优化:(即Stirling公式)
(e = 2.718)
斯特林公式可以用来估算某数的大小,结合lg可以估算某数的位数,或者可以估算某数的阶乘是另一个数的倍数。
- 例题: http://acm.hdu.edu.cn/showproblem.php?pid=1018
-
题目给出的N的范围是: 1<= N <= 107
用普通方法肯定算不出N的阶乘后的出的数字位数,但运用斯特林公式则很好解决.
Stirling 公式
即:
Stirling公式的意义在于:当n足够大时,n!计算起来十分困难,虽然有很多关于n!的等式,但并不能很好地对阶乘结果进行估计,尤其是n很大之后,误差将会非常大。但利用Stirling公式可以将阶乘转化成幂函数,使得阶乘的结果得以更好的估计。而且n越大,估计得越准确。
利用Stirling公式求解n!的位数:易知整数n的位数为[lgn]+1。利用Stirling公式计算n!结果的位数时,可以两边取对数,得:
故n!的位数为:
斯特林公式 ——Stirling公式(取N阶乘近似值)相关推荐
- HDU 1018.Big Number-Stirling(斯特林)公式 取N阶乘近似值
最近一堆题目要补,一直咸鱼,补了一堆水题都没必要写题解.备忘一下这个公式. Stirling公式的意义在于:当n足够大时,n!计算起来十分困难,虽然有很多关于n!的等式,但并不能很好地对阶乘结果进行估 ...
- 【数论】斯特林公式 ——Stirling公式(取N阶乘近似值)
斯特灵公式是一条用来取n阶乘近似值的数学公式.一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用.从图中可以看出,即使在n很小的时候,斯特灵公式的取值已经十分准确. 公式为: ...
- 斯特林公式 ——Stirling公式(取N阶乘近似值)(转)
斯特灵公式是一条用来取n阶乘近似值的数学公式.一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用.从图中可以看出,即使在n很小的时候,斯特灵公式的取值已经十分准确. 公式为: ...
- 斯特灵公式求阶乘c语言,斯特林公式 ——Stirling公式(取N阶乘近似值)
基于UDP协议的socket编程示例 客户端 import java.io.IOException; import java.net.DatagramPacket; import java.net.D ...
- Wallis公式Stirling公式Gamma函数
Wallis公式 (!!是双阶乘,不超过这个整数且具有相同奇偶的正整数相乘,比如5!!=1×3×5, 6!!=2×4×6) 利用Wallis公式推导Stirling公式 斯特林公式是一条用来取n阶乘近 ...
- Stirling公式(pku1423)
Stirling 公式 即: Stirling公式的意义在于:当n足够大时,n!计算起来十分困难,虽然有很多关于n!的等式,但并不能很好地对阶乘结果进行估计,尤其是n很大之后,误差将会非常大.但利用S ...
- Stirling公式 求n! 的位数
Stirling 公式 即: Stirling公式的意义在于:当n足够大时,n!计算起来十分困难,虽然有很多关于n!的等式,但并不能很好地对阶乘结果进行估计,尤其是n很大之后,误差将会非常大.但利用S ...
- poj 1423 stirling公式(阶乘的位数)
题意:给定一个数(小于10^7),求这个数阶乘的位数. 思路:首先,求一个数n的位数可以用log10(n)向上取整来得到(10的整数次幂要特殊判断).所以所求由log10(1)+log10(2)+lo ...
- Stirling公式(斯特林公式)
普通计算时: N!=1*2*3*4*5*............*N: 如果要计算N!后得到的数字,则我们可以知道其等于lgN!+1 lgN!=lg1+lg2+lg3+lg4+lg5+........ ...
- Stirling公式
Stirling 公式 Stirling公式 1.阶乘 n!=n(n−1)(n−2)⋯×3×2×1(n≥1)n! = n(n-1)(n-2)\cdots\times3\times2\times1\qu ...
最新文章
- 升余弦滤波器与根升余弦滤波器
- 用上这个Python的Docker正式版镜像,你也能成为容器高玩
- 每个网站SEO优化人员都要熟知的三大图片优化技巧
- android socket_附详尽答案,新版精选Android中高级面试题二
- java 会话跟踪技术_JavaEE基础(04):会话跟踪技术,Session和Cookie详解
- apollo 配置中心_Spring Cloud 系列之 Apollo 配置中心(三)
- [转]关于Linux下时间片分配给进程还是线程的问题
- 接触网作业车司机许新峰的春运
- 2018-4-17论文《狼群算法的研究与应用》笔记1 智能算法简介;狼群算法国内外研究现状以及参看文献
- PE启动盘制作,电脑PE工具制作教程(可能是最详细的制作方法)小白推荐
- 开发中使用第三方工具/服务
- centos安装Docker与使用构建业务镜像挂载卷harbor仓库的高可用及网络模式和资源限制介绍...
- python编程游戏-9个Python编程小游戏,有趣又好玩,简直太棒了
- Linux下conda环境配置及第三方库安装
- 2022-07-12 读书笔记:《写给所有人的极简统计学》
- Linux如何安装mysql数据库
- 如何创建低成本沙箱环境?推荐你使用API仿真!
- Deepin V20 安装 佳能 Canon LBP 2900打印机
- 混沌神经网络(Chaos Neural Network)
- 多功能存储器芯片的测试系统设计方案