Cod sursa(job #875477)
Utilizator | Data | 10 februarie 2013 11:15:33 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.33 kb |
#include <fstream>
#include <bitset>
using namespace std;
int main() {
ifstream cin("ciur.in");
ofstream cout("ciur.out");
int n; cin >> n;
bitset<2000001> sieve;
for (int i=3,j; i<=n; ) {
for (j=i+i+i; j<=n; j+=(i<<1))
sieve.set(j);
while ((i+=2)<=n && sieve[i]);
}
cout << n-n/2-sieve.count();//1 mark,2 not mark
return 0;
}