Cod sursa(job #1830011)

Utilizator danimarcCNAIMarc Daniel danimarcCNAI Data 15 decembrie 2016 23:03:39
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <stdio.h>
#include <bitset>
using namespace std;
FILE *f,*g;
bitset <2000002> v; //elementele vecotului coincid cu pozitia (vector de frecventa //bitsetu e un tip de date, care aloca 18mb si foloseste cat are nevoie adica 1mb
int main()
{
    f=fopen("ciur.in","r");
    g=fopen("ciur.out","w");
    int n,s=0,i,j;
    fscanf(f,"%d",&n);
    for(i=2;i<=n;i++) //parcurgem vecotrul incepand cu al 2-lea, fiindca 1 nu e prim prin conventie
    {
        if(v[i]==0) //DOAR daca gasim un vector prim, verificam daca are multiplii, pe care ii scoatem ulterior din vector
        {
            for(j=i*2;j<=n;j+=i)
            {
                v[j]=1; //scoatem multiplul
            }
            s++;
        }
    }
    fprintf(g,"%d",s);
    fclose(f);
    fclose(g);
    return 0;
}