首页 > 代码库 > 阶乘因式分解出m(素数)的个数
阶乘因式分解出m(素数)的个数
阶乘因式分解出m(素数)的个数
题目描述:n的阶乘中含有m(素数)的个数。
1 2 #include<stdio.h> 3 int main() { 4 int t; 5 scanf("%d", &t); 6 while(t--) { 7 int n, m; 8 scanf("%d%d", &n, &m); 9 int s = 0; 10 while(n) { //n!看成一个【1,n】数组,第几个数就是几 11 n /= m; //在1~n里一共有n/m个数能被m整除 12 s += n; 13 } 14 printf("%d\n", s); 15 } 16 }
思路:大数阶乘很容易超出范围,则采用下列算法
1.将n!的阶乘看成是一个【1,n】的数组,第几个数就是几
2.在1~n中一共有n/m个数能被m整除
3.步骤2完成以后,数组变为【1,n/m】,再重复步骤2
4.直到n<m,即n/m==0为止。
阶乘因式分解出m(素数)的个数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。