求n!中含有某个因子个数的方法
2015-08-31 10:50
302 查看
求n的阶乘某个因子a的个数,如果n比较小,可以直接算出来,但是如果n很大,此时n!超出了数据的表示范围,这种直接求的方法肯定行不通。其实n!可以表示成统一的方式。
n!=(k^m)*(m!)*a 其中k是该因子,m=n/k,a是不含因子k的数的乘积
下面推导这个公式
n!=n*(n-1)*(n-2)*......3*2*1
=(k*2k*3k.....*mk)*a a是不含因子k的数的乘积,显然m=n/k;
=(k^m)*(1*2*3...*m)*a
=k^m*m!*a
接下来按照相同的方法可以求出m!中含有因子k的个数。
因此就可以求除n!中因子k的个数
n!=(k^m)*(m!)*a 其中k是该因子,m=n/k,a是不含因子k的数的乘积
下面推导这个公式
n!=n*(n-1)*(n-2)*......3*2*1
=(k*2k*3k.....*mk)*a a是不含因子k的数的乘积,显然m=n/k;
=(k^m)*(1*2*3...*m)*a
=k^m*m!*a
接下来按照相同的方法可以求出m!中含有因子k的个数。
因此就可以求除n!中因子k的个数
int count(int n,int k) { int num=0; while(n) { num+=n/k; n/=k; } return num; }
相关文章推荐
- HDU 1026 Ignatius and the Princess I 广搜
- 《JSF教程》-03 环境搭建与第一个入门例子
- 安卓工程不继承ActionBarActivity的设置
- 修改eclipse中web项目的server部署路径
- C++——编程常见错误
- C++——OOP面向对象理解
- 自动适应窗口大小
- Win7系统上面Tex live中利用fontspec包直接访问系统字体
- 大数的四则运算
- 整数划分问题(续)(非递归法)
- 安卓下载及入门教程记录
- Service和IntentService生命周期
- MySQL和SQLServer批量插入的SQL语句区别
- Android中级篇之百度地图SDK v3.5.0-基础地图[图解百度地图基础教程]
- HTML5读取本地文件
- ajax传form表单,表单里有table
- C&C++——段错误(Segmentation fault)
- java数组练习2创建二维数组,并将数组中的内容输出到控制台
- jQuery实现简单的列表式导航菜单效果代码
- android 代码中设置字体大小