204. Count Primes

来源:互联网 发布:男人射精前的样子知乎 编辑:程序博客网 时间:2024/05/18 12:28

1.Question

Description:

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

2.Code

class Solution {public:    int countPrimes(int n) {        int count = 0;        if(n == 0) return count;        bool *flag = new bool[n + 1];        for(int i = 2; i < n; i++)  flag[i] = true;        int m = sqrt(n);        for(int i = 2; i <= m; i++)        {            if(flag[i])            {                for(int j = i * i; j < n; j += i)   flag[j] = false;            }        }        for(int i = 2; i < n; i++)        {            if(flag[i]) count++;        }        return count;    }};

3.Note

a. 这个题可以遍历2~n-1, 判断每一个数是不是素数。而每个数 m 的判断又需要从2~sqrt(m)遍历,看是否能被整除。

b. 根据 Sieve of Eratosthenes 方法可以减小复杂度,他的思想是先找出n以内的非素数,具体可以看原题目的Hint.

0 0
原创粉丝点击