Cod sursa(job #520081)
| Utilizator | Data | 7 ianuarie 2011 13:27:06 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include <fstream>
#include <iostream>
using namespace std;
const int MAX = 2*1000*1000+1;
int n,c;
bool p[MAX];
int main() {
ifstream in("ciur.in");
ofstream out("ciur.out");
in >> n;
p[0]=false; p[1]=false; p[2]=true;
for(int i=3;i<=n;i+=2){
p[i]=true; p[i+1]=false;
}
for(int i=3;i<=n/2;i+=2){
if(p[i]){
for(int j=2;i*j<=n;++j){
p[i*j]=false;
}
}
}
c=0;
for(int i=0;i<=n;++i){
if(p[i]) ++c;
// if(p[i]) cerr<<i<<" ";
}
out << c << "\n";
in.close();
out.close();
return 0;
}
