Pagini recente » Cod sursa (job #460688) | Cod sursa (job #2897149) | Cod sursa (job #1479026) | Cod sursa (job #2928002) | Cod sursa (job #965032)
Cod sursa(job #965032)
#include<fstream>
#include<cstring>
using namespace std;
char prim[2000001];
int main()
{
ifstream fin("ciur.in");
ofstream fout("ciur.out");
int n, i, j, nr;
fin >> n;
nr = 0;
memset(prim, 1, 2000001);
// parcurgem doar pana la radical pentru ca daca exista x > sqrt(n) a.i. x * y <= n,
// sigur y < sqrt(n) => a fost deja marcat cand s-a trecut prin y
for(i = 3; i*i <= n; i += 2)
{
if(prim[i] != 0)
{
// plecam de la i * i pentru ca toti multiplii lui i pana in i*i au fost marcati in parcurgerile anterioare
for(j = i * i; j <= n; j += i)
prim[j] = 0;
}
}
nr = 1; // nr. 2 e prim
for(i = 3; i <= n; i += 2)
if(prim[i] == 1)
nr++;
fout << nr;
return 0;
}