leetcode 204 Count Primes C++

来源:互联网 发布:网络电视如何看电视台 编辑:程序博客网 时间:2024/05/14 12:01

判断素数的几个tips:

判断到sqrt(n)的时候就可以了,后面的数不用看(因为如果能被整除,一定是一个大于sqrt,一个小于sqrt,或都等于)。

所有数字都是由素数组成的,所以只看素数就可以了。


class Solution {public:    vector<int> primeVec;        bool isPrime(int n){        int half = sqrt(n);        int len = primeVec.size();        for(int i = 0;i<len;i++){            int tmp = primeVec[i];            if(half<tmp) break;            if(n%tmp == 0) return false;        }        return true;    }        int countPrimes(int n) {                if(n<=2) return 0;        for(int i = 2;i<n;i++){            if(isPrime(i)) primeVec.push_back(i);        }        return primeVec.size();    }};

不过这个程序还是太慢了,比起一些大神的,以后再研究。


0 0