zoukankan      html  css  js  c++  java
  • LeetCode

    Count Primes

    2015.4.30 15:51

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

    Solution:

      Sieve of Eratosthenes.

    Accepted code:

     1 // 2CE, 1MLE, 1RE, 1AC, trial and error
     2 #include <cstring>
     3 using namespace std;
     4 
     5 const int N = 2000000;
     6 int b[N + 1], c[N + 1];
     7 bool once = false;
     8 
     9 class Solution {
    10 public:
    11     Solution() {
    12         Eratosthenes();
    13     }
    14     
    15     int countPrimes(int n) {
    16         return n > 0 ? c[n - 1] : 0;
    17     }
    18 private:
    19     void Eratosthenes() {
    20         if (once) {
    21             return;
    22         }
    23         
    24         int i, j;
    25         
    26         memset(b, 0, (N + 1) * sizeof(int));
    27         memset(c, 0, (N + 1) * sizeof(int));
    28         b[0] = b[1] = 1;
    29         for (i = 2; i <= N / i; ++i) {
    30             if (b[i]) {
    31                 continue;
    32             }
    33             for (j = i; j <= N / i; ++j) {
    34                 b[i * j] = 1;
    35             }
    36         }
    37         for (i = 1; i <= N; ++i) {
    38             c[i] = b[i] ? c[i - 1] : c[i - 1] + 1;
    39         }
    40         once = true;
    41     }
    42 };
  • 相关阅读:
    SVN
    jenkins可视化
    Tomcat
    防火墙
    keepalived
    MHA高可用
    http
    inotifywait
    DNS
    nginx
  • 原文地址:https://www.cnblogs.com/zhuli19901106/p/4469118.html
Copyright © 2011-2022 走看看