Cod sursa(job #1144956)
| Utilizator | Data | 17 martie 2014 19:24:41 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.54 kb |
#include <fstream>
#include <cmath>
using namespace std;
bool c[2000000];
int main()
{int i, x, j, nr = 0, m; double n;
ifstream in("ciur.in");
ofstream out("ciur.out");
in >> x;
if (x > 1)
++nr;
n = sqrt(x);
m = (int)n;
for (i = 3; i <= m; i += 2)
{
if (!c[i])
++nr;
for (j = i; j <= x/i; ++j)
c[i*j] = 1;
}
for (i = n+1; i <= x; ++i)
if (!c[i] && i % 2 != 0)
++nr;
out << nr << '\n';
return 0;
}
