Cod sursa(job #810093)

Utilizator petiVass Peter peti Data 9 noiembrie 2012 17:36:05
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.46 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;


int main(){
	ifstream ifs("ciur.in");
	ofstream ofs("ciur.out");
	unsigned int N,nr=1;
	ifs>>N;
	unsigned int sqn=sqrt(N);
	vector<bool> v(N/2,false);
	
	for(unsigned int i=3;i<=N;i+=2){
		if(v[(i+1)>>1]==false){
			nr++;
			if(i<=sqn){
				for(unsigned int j=i+i+i;j<=N;j+=i+i){
					v[(j+1)>>1]=true;
				}
			}
		}
	}
	ofs<<nr;
	return 0;
}