我们来一个样例说明一下:

1 2 3 4 5 6 7 8 我们求得在8!中2的个数 
   1    1    1    1 首先我们先计算出2的倍数的个数:8/2=4 
         1          1 其次我们计算出4的倍数的个数: 8/4=2(上面一个式子求出了第一层,现在求第二层) 
                     1 最后我们解出第三层的2的个数: 8/8=1

我们把4+2+1=7,所以一共7个2出现了。

即:

到这里我们可以发现:我们平时求的方法是一列一列求的(就是每一个数算一遍),而这个方法我们每一行每一行的求,虽然效果一样,但求起来速度很快。值得学习。

故做法:

  1.先把素数表打好

  2.for循环把小于n的每个质数进行一次运算,用数组记录

  3.结束

非常快。


原文:https://blog.csdn.net/qq_40679299/article/details/80586638