From d75d8fd8465756bea81667b5fe22d657a2f01b06 Mon Sep 17 00:00:00 2001 From: z3r0dmg <30744779+z3r0dmg@users.noreply.github.com> Date: Sat, 27 Oct 2018 18:07:04 +0530 Subject: [PATCH] Linear Sieve computes first n prime numbers in linear time --- .../Mathematical Algorithms/LinearSieve.cpp | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Algorithms/Mathematical Algorithms/LinearSieve.cpp diff --git a/Algorithms/Mathematical Algorithms/LinearSieve.cpp b/Algorithms/Mathematical Algorithms/LinearSieve.cpp new file mode 100644 index 000000000..1f5b8c890 --- /dev/null +++ b/Algorithms/Mathematical Algorithms/LinearSieve.cpp @@ -0,0 +1,30 @@ +#include + +using namespace std; + +const int N = 10000000; +int lp[N+1]; +vector prime; + +void sieve(){ + for (int i=2; i<=N; ++i) { + if (lp[i] == 0) { + lp[i] = i; + prime.push_back (i); + } + for (int j=0; j<(int)prime.size() && prime[j]<=lp[i] && i*prime[j]<=N; ++j) + lp[i * prime[j]] = prime[j]; + } +} + +int main(){ + + sieve(); + int n; + cin>>n; + + for(int i=0;i<=n;i++){ + cout<