Cod sursa(job #1233597)
| Utilizator | Data | 25 septembrie 2014 19:17:28 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.58 kb |
#include <fstream>
#include <bitset>
using namespace std;
ifstream fin("ciur.in");
ofstream fout("ciur.out");
bitset<1000005> P;
int n,i,j,k,cnt;
int main()
{
fin>>n;
if(n==2)
{
fout<<"1";
return 0;
}
if(n%2==0)
n--;
n=(n-1)/2;
cnt=1;
for(i=1;2*i*i+2*i<=n;i++)
{
j=2*i+1;
if(P[i]==0)
{
cnt++;
for(k=2*i*i+2*i;k<=n;k+=j)
P[j]=1;
}
}
for(;i<=n;i++)
if(P[i]==0)
cnt++;
fout<<cnt;
return 0;
}
