Cod sursa(job #810091)
| Utilizator | Data | 9 noiembrie 2012 17:29:51 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.44 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(int i=3;i<=N;i+=2){
if(v[(i+1)/2]==false){
nr++;
if(i<=sqn){
for(int j=i+i+i;j<=N;j+=2*i){
v[(j+1)/2]=true;
}
}
}
}
ofs<<nr;
return 0;
}