204. Count Primes

来源:互联网 发布:linux笔试题目 编辑:程序博客网 时间:2024/05/20 19:28

题目

Description:

Count the number of prime numbers less than a non-negative number, n.

Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.


思路

普通的计算素数个数效率太低,这里用空间换时间,搞一个各个数的flag,通过flag来计算素数个数


代码

class Solution {public:    int countPrimes(int n) {        if(n < 2)        {            return 0;        }        //传统的素数判断效率比较低,这里用空间换时间,搞一个各个数的标志flag        vector<int> primerFlag(n+1,true);        int upperBound = sqrt(n);        int primerCount = 0;        for(int i=2;i<n;i++)        {            if(primerFlag[i])            {                primerCount++;                if(i > upperBound)                {                    continue;                }                for(int j=i;j*i<n;j++)                {                    primerFlag[j*i] = false;                }            }        }        return primerCount;    }};
0 0
原创粉丝点击