sieve: iteration 1

This commit is contained in:
Dmitry Kokorin 2016-04-01 16:40:23 +03:00
parent 62aaca3931
commit 1111ce3513
2 changed files with 42 additions and 0 deletions

29
cpp/sieve/sieve.cpp Normal file
View file

@ -0,0 +1,29 @@
#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; p < n; ++p) {
if (sieve[p])
continue;
result.push_back(p);
for (size_t i = p*p; i < n; i += p) {
sieve[i] = true;
}
}
return result;
}
}

13
cpp/sieve/sieve.h Normal file
View file

@ -0,0 +1,13 @@
#pragma once
#define EXERCISM_RUN_ALL_TESTS
#include <vector>
namespace sieve {
typedef std::vector<int> primes_t;
primes_t primes(std::size_t n);
}