Cod sursa(job #461884)
| Utilizator | Data | 8 iunie 2010 22:55:01 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.42 kb |
#include<fstream.h>
ifstream f("ciur.in");
ofstream g("ciur.out");
char a[300001];
int i,rezultat=0,n;
void ciur(int n){
int i,j;
for(i=4;i<=n;i+=2)
a[i/8]|=(1<<(i%8));
i=3;
while(i<=n){
do{
++i;
}while( (a[i/8] & (1<<(i%8))) );
for(j=i+i;j<=n;j+=i) a[j/8]|=(1<<(j%8));
++rezultat;
}
}
int main(){
f>>n;
ciur(n);
g<<rezultat<<'\n';
g.close();
return 0;
}