LeetCode 204. Count Primes

来源:互联网 发布:站长查询SEO是什么意思 编辑:程序博客网 时间:2024/06/10 03:13

解题思路:维基百科中 https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes 

 Input: an integer n > 1.  Let A be an array of Boolean values, indexed by integers 2 to n, initially all set to true.  for i = 2, 3, 4, ..., not exceeding √n:   if A[i] is true:     for j = i2, i2+i, i2+2i, i2+3i, ..., not exceeding n:       A[j] := false.  Output: all i such that A[i] is true.

class Solution {public:        int countPrimes(int n) {            if (2 >= n) return 0;            vector<bool>primes(n,true);            int sqr = sqrt(n - 1);            for (int i = 2; i <= sqr; ++i){                if (primes[i]){                    for (int j = i * i; j < n; j += i)                    primes[j] = false;            }            }            int sum = 0;            for (int i = 2; i < n; ++i)                sum += (primes[i]) ? 1 : 0;            return sum;    }};

0 0
原创粉丝点击