LeetCode

LeetCode 204. Count Primes

题目描述:

Description:

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

使用筛法, 从小到大剔除每个遇到的素数的小于n的倍数, 直到$\sqrt n$, 每剔除一个就将素数个数减1. sum一开始减2是为了去掉1和n自身.

class Solution {
public:
	int countPrimes(int n) {
	    if(n <= 1) return 0;
		vector<int> s(n, 0);
		int sum = n - 2;
		for (int i = 2; i * i < n; i++) {
		    if(s[i]) continue;
			for (int j = i; i * j < n; j++) {
			    int index = i * j;
			    if(!s[index]) {
			        sum--;
				    s[index] = 1;
			    }
			}
		}
		return sum;
	}
};

    输入关键词开始搜索