Cod sursa(job #658604)

Utilizator CosminRusuCosmin Rusu CosminRusu Data 9 ianuarie 2012 10:35:34
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda winners10.1 Marime 0.69 kb
//Ciurul lui Eufratostenes.
#include <fstream>
#include <bitset>
#include<math.h>
using namespace std;
bitset <2000005>ciur;
int main() 
{
    int i,nr=0,n,j;
    float radical;
    //char ciur[2000001];
    ifstream fin("ciur.in");
    ofstream fout("ciur.out");
    fin>>n;
 for(i=4;i<=n;i=i+=2)  ciur[i]=1;
nr=1;//pt ca il socotim si pe 2
radical=sqrt(n);

for(i=3; i<=radical; i=i+2)
    {
             if (ciur[i]==0)
             {nr++;
             for (j=i+i;j<=n;j=j+i)
             ciur[j]=1; } }
for(i=radical+1;i<=n;i++) if (ciur[i]==0) nr++;
             
    fout<<nr;
             
    fin.close();
    fout.close();
    return 0;
}