sieve: improvement
This commit is contained in:
parent
c065f71eb9
commit
f478d6feca
1 changed files with 7 additions and 4 deletions
|
|
@ -1,5 +1,6 @@
|
|||
#include "sieve.h"
|
||||
|
||||
|
||||
namespace sieve {
|
||||
|
||||
using namespace std;
|
||||
|
|
@ -10,19 +11,21 @@ primes_t primes(size_t n)
|
|||
|
||||
vector<char> sieve(n, false);
|
||||
|
||||
for (size_t p = 2; p < n; ++p) {
|
||||
for (size_t p = 2, p2 = 2*2; p2 < n; ++p, p2 = p*p) {
|
||||
|
||||
if (sieve[p])
|
||||
continue;
|
||||
|
||||
result.push_back(p);
|
||||
|
||||
for (size_t i = p*p; i < n; i += p) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue