数学学习之阶乘
来源:互联网 发布:遗传算法应用领域 编辑:程序博客网 时间:2024/04/29 06:48
今天看了一会《离散数学及其应用》的第一章后面的上机题的第一道题。
求n!的位数在100到100之间的最大的n。
要解决这个问题,首先就来研究一下阶乘的性质。
查一下wiki百科,就会发现关于阶乘有个斯特林公式: (有兴趣戳这里),那么我们就可以很快的求出n的阶乘。但是我们不需要求出n的阶乘,只需要知道它有多少位。所以现在就要知道怎样求一个数有多少位了。答案就是log(n)+1。下面是简单证明:
设一个数为n,它有w位,则它可表示为n=c+10^(w-1),其中c<10。所以w=log(n)+1。
所以有斯特林公式,就可以很快的求出n的阶乘有多少位了。不过当n不大的时候,可以有log(10)=log(1)+······+log(n)得到。可以看一下(Poj 1423 big bumber )就是求一个数有多少位。
因此,解决上面的问题求n!的位数在100到100之间的最大的n,就只需要简单的枚举下就可以了。
既然在看阶乘,就一下把相关的题目做一做吧。
求n!后面有多少个零。poj 1401 facrorial
将n!展开:n!=1*2*3*4*5······*n。要想知道末尾有多少零,只需知道有多少个2和5相乘就可以了。又因为在n!中5比2少很多,只需要知道有多少个5既可以了,即在n!中,因子5出现了多少次。关于这个问题,《具体数学》中有所提及。
给定一个素数p,在{1,2,3,···n}中,它的倍数有ceil(n/p)个。
则p的平方, 在{1,2,3,···n}中,它的倍数有ceil(n/p^2)个。
依次类推,就知道在{1,2,3,···n}中,素数p一共出现了多少次。
- 数学学习之阶乘
- 乱搞+数学——阶乘之乘
- 数学中阶乘因式分解
- 组合数学 阶乘
- 学习之《数学之美》
- c#学习笔记之阶乘遇到问题
- 数学之美学习笔记
- 机器学习之数学规划
- 数学排列组合,阶乘在线计算器
- 数学问题--大数的阶乘
- nyoj70阶乘因式分解(数学)
- 数学之路(3)-机器学习(3)-数学基础
- oracle 学习之--------利用递归算法实现阶乘
- ACM学习_数学基础之数论
- 数学结构之二叉树学习
- ACM学习笔记之 数学问题----素数
- Hive学习之内置数学、日期函数
- SQL Server学习记录之数学函数
- 数据库表的四种连接方式-----左外连接、右外连接、内连接、全连接
- win7下jdk安装环境变量配置
- Android MediaPlayer与Http Proxy结合之提高篇
- Java I/O总结
- 应用libsvm对训练集进行训练并测试得出正确率和召回率
- 数学学习之阶乘
- 设置无边框全屏窗口
- HDU2523:SORT AGAIN
- paper
- archlinux 中文本地化配置
- Android 屏幕截图
- Remove '@override' annotation解决办法
- 我是一名辅导员
- 一步步教你交叉编译嵌入式linux GUI-directfb+gtk