Successive prime differences: Difference between revisions

m
Put Sieve of Eratosthenes implementation in separate header file
(→‎{{header|Raku}}: fix up internal link)
m (Put Sieve of Eratosthenes implementation in separate header file)
Line 144:
#include <cstdint>
#include <vector>
class#include "sieve_of_eratosthenes {.h"
 
using integer = uint32_t;
using vector = std::vector<integer>;
 
class sieve_of_eratosthenes {
public:
explicit sieve_of_eratosthenes(size_t);
bool is_prime(integer n) const {
return is_prime_[n];
}
private:
std::vector<bool> is_prime_;
};
 
sieve_of_eratosthenes::sieve_of_eratosthenes(size_t max)
: is_prime_(max, true) {
is_prime_[0] = is_prime_[1] = false;
for (integer p = 2; p * p < max; ++p) {
if (is_prime_[p]) {
for (integer q = p * p; q < max; q +=p)
is_prime_[q] = false;
}
}
 
void print_vector(const vector& vec) {
Line 240 ⟶ 220:
return 0;
}</lang>
 
Contents of sieve_of_eratosthenes.h:
<lang cpp>#ifndef SIEVE_OF_ERATOSTHENES_H
#define SIEVE_OF_ERATOSTHENES_H
 
#include <vector>
 
class sieve_of_eratosthenes
{
public:
explicit sieve_of_eratosthenes(size_t);
bool is_prime(integer nsize_t) const {;
private:
std::vector<bool> is_prime_;
};
 
inline bool sieve_of_eratosthenes::is_prime(size_t n) const
{
return is_prime_[n];
 
inline sieve_of_eratosthenes::sieve_of_eratosthenes(size_t max)
: is_prime_(max, true) {
{
is_prime_[0] = is_prime_[1] = false;
for (integersize_t p = 2; p * p < max; ++p) {
}{
if (is_prime_[p]) {
{
for (integersize_t q = p * p; q < max; q +=p)
is_prime_[q] = false;
}
}
}
 
#endif</lang>
 
{{out}}
1,777

edits