From 00b08d7412eb418b6b7bd741709fbd68d6a66315 Mon Sep 17 00:00:00 2001 From: dm1sh Date: Wed, 25 May 2022 00:23:48 +0300 Subject: [PATCH] init --- SieveOfEratosthenes.hpp | 35 +++++++++++++++++++++++++++++++++++ main.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 SieveOfEratosthenes.hpp create mode 100644 main.cpp diff --git a/SieveOfEratosthenes.hpp b/SieveOfEratosthenes.hpp new file mode 100644 index 0000000..ed90561 --- /dev/null +++ b/SieveOfEratosthenes.hpp @@ -0,0 +1,35 @@ +#include +#include +#include + +using namespace std; + +template +constexpr size_t c_div(U a, F b) +{ + return static_cast(a / b + 0.5); +}; + +template +class Primes +{ +public: + constexpr Primes() + { + for (size_t i = 0; i < N; i++) + b[i] = 1; + + for (size_t i = 2; i <= N; i++) + if (b[i-1]) + for (size_t j = 2 * i; j <= N; j += i) + b[j-1] = 0; + + for (size_t i = 1; i < N; i++) + if (b[i]) + arr[n++] = i+1; + }; + + size_t n; + array b; + array arr; +}; \ No newline at end of file diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..0440476 --- /dev/null +++ b/main.cpp @@ -0,0 +1,41 @@ +#include +#include +#include +#include + +// #include "SieveOfEratosthenes.hpp" + +using namespace std; + +template +class Primes +{ +public: + constexpr Primes() + { + bool b[N]{0}; + + for (size_t i = 2; i <= N; i++) + if (!b[i-1]) + for (size_t j = 2 * i; j <= N; j += i) + b[j-1] = 1; + + for (size_t i = 1; i < N; i++) + if (!b[i]) + arr[n++] = i+1; + }; + + size_t n = 0; + array arr{}; +}; + +int main () { + constexpr Primes< 262144U > primes; + + ofstream out("out.txt"); + + for (size_t i = 0; i < primes.n; i++) + out << primes.arr[i] << endl; + + out.close(); +}