Cod sursa(job #652391)
| Utilizator | Data | 24 decembrie 2011 12:19:48 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.57 kb |
#include <fstream>
#define Ciur 125001
using namespace std;
ifstream in;
ofstream out;
char p[Ciur];
int main()
{
int N,cnt;
in.open("ciur.in");
in>>N;
in.close();
for(int i=1;((i*i)<<2)+(i<<2)+1<=N;++i)
if((p[i>>3]&(1<<(i&7)))==0)
for(int j=((i*i)<<1)+(i<<1);(j<<1)+1<=N;j+=(i<<1)+1)
p[j>>3]|=(1<<(j&7));
cnt=1;
for(int i=1;(i<<1)+1<=N;++i)
if((p[i>>3]&(1<<(i&7)))==0) ++cnt;
out.open("ciur.out");
out<<cnt<<'\n';
out.close();
return 0;
}
