sieve: iteration 1
This commit is contained in:
parent
62aaca3931
commit
1111ce3513
2 changed files with 42 additions and 0 deletions
29
cpp/sieve/sieve.cpp
Normal file
29
cpp/sieve/sieve.cpp
Normal 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
13
cpp/sieve/sieve.h
Normal 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);
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue