Pagini recente » Cod sursa (job #2505997) | Cod sursa (job #1222207) | Cod sursa (job #2924655) | Cod sursa (job #2739396) | Cod sursa (job #1042819)
#include<stdio.h>
class Eratostenes{
int nrPrimes;
unsigned char *v;
public:
Eratostenes(int n) : nrPrimes((n+1)/2){
int i,j;
v=new unsigned char[((n>>4)+2)]();
for(i=3;i*i<=n;i+=2){
if(v[i>>4]&(1<<((i>>1)&7)))
continue;
for(j=i*3;j<=n;j+=i+i){
if(!(v[j>>4]&(1<<((j>>1)&7))))
nrPrimes--;
v[j>>4]|=(1<<((j>>1)&7));
}
}
}
~Eratostenes(){
delete[] v;
}
int getNrPrimes(){
return nrPrimes;
}
};
int main(){
int n;
freopen("ciur.in","r",stdin);
freopen("ciur.out","w",stdout);
scanf("%d",&n);
Eratostenes ciur(n);
printf("%d",ciur.getNrPrimes());
return 0;
}