Description:
Count the number of prime numbers less than a non-negative number, n
Tips for Sunburn Method:
Http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
Https://primes.utm.edu/howmany.html
Someone else's code:
int countprimes (int n) { if (n<=2) return 0; Vector<bool> passed (n, false); int sum = 1; int upper = sqrt (n); for (int i=3; i<n; i+=2) { if (!passed[i]) { sum++; Avoid overflow if (i>upper) continue; for (int j=i*i; j<n; j+=i) { passed[j] = true; }}} return sum;}
My Code:
Countprime.cpp: Defines the entry point of the console application. #include "stdafx.h" #include <iostream> #include <math.h> #include <vector>using namespace Std;int countPrimes1 (int n) {int temp = 0;if (2 >= N) return 0;bool* primes = new Bool[n];for (int i = 2; i < n; ++i) primes[ I] = true;int SQR = (int) (sqrt (double) (n-1)); for (int i = 2; I <= sqr; ++i) {if (Primes[i]) {temp++;for (int j = i * I J < N; J + = i) primes[j] = false;}} int sum = 0;for (int i = 2; i < n; ++i) sum + = (Primes[i])? 1:0;/*cout<<temp;*/delete[] Primes;return sum;} int countprimes (int n) {if (n<=2) return 0;int sum = 0;int SQR = (int) (sqrt (double) (n-1)));vector<bool> Prime (N, 0); for (int i = 2; i < n; ++i) Prime[i] = 1;for (int i =2; I <= sqr; ++i) {if (prime[i]==1) {//sum++;for (int j = i*i; J &L T N j = j+i) prime[j] = 0;}} for (int i = 2;i < n; ++i) sum + = Prime[i]? 1:0;return sum;} int _tmain (int argc, _tchar* argv[]) {cout<<countprimes (5) <<endl;cout<<countprimes1 (3) <<eNdl;getchar (); return 0;}
Timeout code:
int countprimes (int n) { int sum = 0; for (int i = 0; i<=n;i=i+2) { int j = 2; int temp = sqrt (i); for (; j<=temp;j=j+1) { if ((i%temp) ==0) {break;} sum++; } } return sum; }
Remember the first AC
The number of prime numbers in Leetcode 204 questions