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;

    }
}

  

原文地址:https://www.cnblogs.com/lzh1043060917/p/12970239.html