Count Primes [LeetCode 解题报告]

Posted Michael-zhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Count Primes [LeetCode 解题报告]相关的知识,希望对你有一定的参考价值。

题目描述:
给定n,返回小于n的素数的个数。
解题思路:
1)地毯式搜索(TLE)
即:统一从2到根号n的所有数中素数的个数,太暴力了,没过测试!
2)上下素性判别法(貌似是这个名字,TLE)
大于3的所有素数都可以表示成6*k+1或者6*k-1的形式,从而只从满足这个条件的数中进行地毯式筛选,无奈还是TLE。。。。
3)迭代向后筛选法(名字自创的,哈哈!!重点是理解思路就行)
首先分析小于n的所有数中,所有偶数肯定不是素数,所以从所有奇数中筛选;在所有奇数中,每个小奇数的奇数倍肯定也不是素数,循环至n的开平方;然后统计所有奇数中没有被标定为和数的个数,即可得到最终的count,代码如下:

int countPrimes(int n) 
        if(n<=2)return 0;
        bool isNotPrime[n+1]=;
        for(int i=3;i<=sqrt(n);i+=2)
            if(isNotPrime[i])continue;
            for(int j=i*i;j<n;j+=2*i)
            isNotPrime[j]=true;
        
        int res=1;
        for(int i=3;i<n;i+=2)
        if(!isNotPrime[i])res++;
        return res;
    

以上是关于Count Primes [LeetCode 解题报告]的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 204. Count Primes

Java [Leetcode 204]Count Primes

LeetCode Count Primes

#Leetcode# 204. Count Primes

LeetCode----204. Count Primes(Java)

[LeetCode][JavaScript]Count Primes