need improve204. Count Primes

来源:互联网 发布:intent传递int数据 编辑:程序博客网 时间:2024/06/08 00:41
int countPrimes(int n) {    if(--n < 2) return 0;    int m = (n + 1)/2, count = m, k, u = (sqrt(n) - 1)/2;    bool notPrime[m] = {0};    for(int i = 1; i <= u;i++)        if(!notPrime[i])          for(k = (i+ 1)*2*i; k < m;k += i*2 + 1)              if (!notPrime[k])              {                  notPrime[k] = true;                  count--;              }    return count;}class Solution {public:    int countPrimes(int n) {        int *d=new int[n+1];        memset(d,0,(n+1)*sizeof(int));        int sum=0;        for(int i=2;i<n;i++)        {            if(d[i]==0)            {                sum++;                int index=i;                while(index<n)                {                    d[index]=1;                    index+=i;                }            }        }        return sum;    }};class Solution {public:    int countPrimes(int n) {        if(n<3) return 0;         int *d=new int[n+1];        memset(d,0,(n+1)*sizeof(int));        int sum=1;        for(int i=3;i<n;i+=2)        {            if(d[i]==0)            {                sum++;                int index=i;                while(index<n)                {                    d[index]=1;                    index+=i;                }            }        }        return sum;    }};
0 0
原创粉丝点击