exercism-solutions/cpp/sieve/sieve.cpp

32 lines
459 B
C++

#include "sieve.h"
namespace sieve {
using namespace std;
primes_t primes(size_t n)
{
primes_t result;
vector<char> sieve(n, false);
for (size_t p = 2, p2 = 2*2; p2 < n; ++p, p2 = p*p) {
if (sieve[p])
continue;
for (size_t i = p2; i < n; i += p) {
sieve[i] = true;
}
}
for (size_t i = 2; i < n; ++i)
if (!sieve[i])
result.push_back(i);
return result;
}
}