← Back to topics
Topic

Eratostenovo sito

V
Vidakovic
Jel mi može neko pokazati kako da pustim Eratostenovo sito na neki interval brojeva od A do B a da ih ne ubacujem u niz? Unapred hvala!
h
halil

#define MAXL 100000

bool sieve[MAXL];
int eratosten(int a,int b){
int t, numprimes = 0, MaxD = (int)sqrt(b+1)+1;
for (int d = 2; d < MaxD; ++d ){
t = (a-1) / d * d;
if (t == 0) t = d;
for (t = t+d; t <= b; t += d) sieve[t-a] = true;
}
for (int i = a; i <= b; ++i) if (!sieve[i-a]) ++numprimes;
return numprimes;
}