204. 计数质数

思路:
首先,判断n是不是质数,只需要判断到n的平方根为止。
(2)质数的倍数一定不是质数。
class Solution {//求的是小于n的所有质数个数!!!!
public int countPrimes(int n) {//如果到n的平方根为止n都找不到能整除自己的数,那么n一定是质数
boolean[] isPrime=new boolean[n];
Arrays.fill(isPrime,true);//填充为true
for(int i=2;i*i<n;i++)//判断一个数是不是质数只要判断到平方根,这个循环是标出所有非质数
{//2一定是质数,
if(isPrime[i])//是质数
{
for(int j=2*i;j<n;j+=i)//质数的倍数一定不是质数,j=2*i易写错
{
isPrime[j]=false;
}
}
}
int count = 0;
for (int i = 2; i < n; i++)//2一定是质数,isPrime[i]代表i这个数是不是质数1
if (isPrime[i]) count++;
return count;
}
}

浙公网安备 33010602011771号