Cod sursa(job #461889)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 8 iunie 2010 23:02:12
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.44 kb
#include<fstream.h>
 ifstream f("ciur.in");
  ofstream g("ciur.out");
    char a[300001];
	long i,rezultat=1,n;
	void ciur(int n){
		int i,j;
		for(i=4;i<=n;i+=2)
			a[i/8]|=(1<<(i%8));
		i=1;
		while(i<=n){
			do{
				i+=2;
			}while( (a[i/8] & (1<<(i%8))) && i<=n );
			for(j=i+i;j<=n;j+=i) a[j/8]|=(1<<(j%8));
			if(i<=n) ++rezultat;
		}
	}
	int main(){
		f>>n;
		ciur(n);
		g<<rezultat<<'\n';
		g.close();
		return 0;
	}