素数就是只有1和本身是它的一个因式 1既不是素数也不是合数
下面介绍两种方法来实现素数个数元素的统计方法
暴力算法实现素数个数的统计
public static int bf(int n )
{
int count = 0;
for(int i =2;i<=n;i++)
{
count+=isPrime(i)?1:0;
}
return count;
}
> 对于整体寻找一个数的因式的时候 只需要遍历到Math.sqrt(x)的时候就可以了 比这个数更大的话 就已经开始重复了 到此的话 更加节省时间
public static boolean isPrime(int x)
{
for(int i =2;i<=Math.sqrt(x);i++)
{
if(x%i==0)return false;
}
return true;
}
埃式筛选 实现对素数个数的统计
public static int eratosthenes(int n)
{
//数组中所有元素都是false
boolean [] isPrime = new boolean[n+1];
int count = 0;//用来记录素数的个数
for(int i =2;i<=n;i++)
{
if(!isPrime[i])
{
count++;
for(int j =i*i;j<=n;j+=i)
{
isPrime[j]=true;
}
}
}
return count;
}