数论之因子个数的求法
来源:互联网 发布:it专业课程 编辑:程序博客网 时间:2024/05/18 01:51
1.N的因子个数
条件:给定任意一个一个正整数N
要求:求其因子的个数
首先给出结论:对于任意的整型N,分解质因数得到N=P1^x1 * P2^x2* …… * Pn^xn;
则N的因子个数M为 M=(x1+1) *(x2+1) * …… *(xn+1);
证明过程:
首先举个例子吧
24 =2^3 * 3^1;
其质因子有:为2和3
那么对于2有0 1 2 3四种指数选择,对于3 有0 1两种指数选择
所以 就是4* 2 = 8 个因子个数
如果还是不懂,那么我们就列举出来吧
23
2^0*3^0=1
2^1*3^0=2
2^2*3^0=4
2^3*3^0=8
结果很清晰了吧??其实这里用到了数学的排列组合的知识
也就是说每一个质因子的不同指数幂与其它质因子相乘,得到的结果一定不会重复
因此能够将所有的因子都列举出来。
所以N的因子数M,我们可以用M=(x1+1)* (x2+1) * …… *(xn+1)表示
2.N!的因子个数
有上面的结论,这个问题就变得明朗多了吧?嘿嘿,不要着急,这里面还有许多细节问题需要我们考虑。
a.
b.
至于原因是什么,自己想想吧,嘿嘿
那我们就直接说思路了:
首先,我们可以把所有的N以内的质数给打表求出来
然后,求每一个质因子的指数个数,这里用到了一个公式,:
最后,就是套公式计算了,M=(e1+1)*(e2+1)*……*(en+1)
算了,还是举个例子吧
比如5!
质因子2的指数是2+1=3;
质因子3的指数是 1;
质因子5的指数是 1;
所以因子个数为4 * 2 * 2 = 16
5!=120因子有1 2 3 4 5 6 8 10 12 15 20 24 30 4060 120
3.给定数列的乘积因子个数
其实这个也是基于第一个结论得到的。
给定 a1a2 a3 …… an;
我们可以找到最大的一个元素Max(a);
把Max以内的素数打表
然后把质因子清零,进行如下循环,就可以找到各个质因子的个数:
for(a=1;a<=n;a++)
for(p=1;p<_;p++)
这样质因子的质数个数就求出来了,然后就可以根据公式M=(e1+1)*(e2+1)*……*(en+1)求出因子个数
- 数论之因子个数的求法
- 数论之因子个数的求法
- 数论之因子个数的求法
- 数论之因子个数的求法
- 数论之因子的个数
- 数论之数的因子个数
- POJ——2992(数论之因子个数)
- HDU 1299(数论,求n的素因子个数)
- (阶乘末尾0的个数的求法)求1~N中因子的数量的方法
- hdu3641 Treasure Hunting(灵活题,阶乘的素因子个数求法)
- poj——1845(数论之因子的和)
- 多个数的最小公倍数求法
- 叶子节点个数之递归求法
- hadoop & hive任务优化之map个数的影响因子
- hdu 1299 Diophantus of Alexandria(数论(因子个数和))
- LIGHT OJ 1278 Sum of Consecutive Integers [因子个数]【数论】
- 51nod 1189 阶乘分数 [因子个数+逆元]【数论】
- 质数因子求法
- 黑马程序员-函数
- Java实现的Sequence工具 - 1
- Java实现的Sequence工具 - 2
- SqlHelper类
- Zookeeper的配置
- 数论之因子个数的求法
- 求两个或N个数的最大公约数(gcd)和…
- CodeForces 158C.Cd and pwd command
- struct学习
- Spreadsheet 常用属性
- CS与BS区别
- 怎样在easyUi里面获取到easyui-tree
- Jquery 基础
- CSDN密码又被改了