码迷,mamicode.com
首页 > 其他好文 > 详细

阶乘因式分解出m(素数)的个数

时间:2017-06-20 18:04:41      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:--   div   步骤   scan   code   大数阶乘   数组   class   范围   

阶乘因式分解出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(素数)的个数

标签:--   div   步骤   scan   code   大数阶乘   数组   class   范围   

原文地址:http://www.cnblogs.com/promise123/p/7054934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!