Cod sursa(job #728368)
| Utilizator | Data | 28 martie 2012 17:59:46 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
/* http://infoarena.ro/problema/ciur */
#include <fstream>
#include <cstring>
using std::ifstream;
using std::ofstream;
int main() {
ifstream in("ciur.in");
ofstream out("ciur.out");
unsigned n, i, j, k = 0;
unsigned char *ciur;
in >> n;
ciur = new unsigned char[n + 1];
std::memset(ciur, 1, (n + 1) * sizeof(unsigned char));
for(i = 2; i <= n; ++i) {
if(ciur[i]) {
++k;
for(j = i + i; j <= n; j += i)
ciur[j] = 0;
}
}
out << k;
in.close();
out.close();
return 0;
}