Cod sursa(job #1233601)

Utilizator ZimmyZimmermann Erich Zimmy Data 25 septembrie 2014 19:20:58
Problema Ciurul lui Eratosthenes Scor 100
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[k]=1;
        }
    }
    for(;i<=n;i++)
        if(P[i]==0)
            cnt++;
    fout<<cnt;
    return 0;
}