Problem: https://leetcode.com/problems/count-primes/

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

 

Thought:

SieveofEratosthenes 

 

Code C++:(meet Runtime Error on test case 150000, which I haven't found the reason)

class Solution {
public:
    int countPrimes(int n) {
        if (n <= 1) {
            return 0;
        }
        int nums[n];
        for (int i = 0; i < n; i++) {
            nums[i] = 1;
        }
        nums[0] = 0;nums[1] = 0;
        for (int i = 2; i * i <= n; i++) {
            if (!nums[i]) {
                continue;
            }
            for (int j = 2; i * j < n; j++) {
                nums[i * j] = 0;
            }
        }
        int solve = 0;
        for (int i = 0; i < n; i++) {
            solve += nums[i];
        }
        return solve;
    }
};

 

posted on 2016-07-09 16:36  gavinXing  阅读(115)  评论(0编辑  收藏  举报