素数的定义就是这个数除了1和它本身以外不再有其他的因数。一般来说,要判断一个数是不是素数,就是靠一个循环来实现的。想要判断一个数字前有几个素数时,最常用的方法就是两个循环语句的嵌套。但问题是,这样做会导致代码运行效率低,在处理一些大的数据时,要用很多时间才能计算出来。这时,就需要有运行效率更高的算法来解决这个问题。
再看素数定义,不难发现,2的倍数,3的倍数……均不可能是素数,于是,就有了厄拉多塞筛法。大致的思路就是:将数字与数组的下标关联起来,初始化数组中的数为1,筛选时,将2的倍数,3的倍数……的数组中数字置0。
代码:
int countPrimes(int n)//计算某一个数之前有几个素数
{
int *a;
int i,k,