Cod sursa(job #2200831)

Utilizator daniel.vbVasile Daniel daniel.vb Data 2 mai 2018 18:57:17
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>
#include <math.h>



int n,v[1415],p[1000];




int main()
{
    int i,j,nr,np,lp;
    FILE *f,*g;

    f=fopen("ciur.in","r");
    g=fopen("ciur.out","w");

    fscanf(f,"%d",&n);
    lp=(int)sqrt(n);
    for(i=2;i<=lp;i++)
    {
        v[i]=i;
    }
    nr=0;
    for(i=2;i<=lp;i++)
    {
        if(v[i]!=0)
        {
            nr++;
            p[nr]=i;
            for(j=i+i;j<=lp;j+=i)
                v[j]=0;
        }
    }
    np=nr;
    for(i=lp+1;i<=n;i++)
    {
        for(j=1;p[j]*p[j]<=i;j++)
            if(i%p[j]==0)
                break;
        if(p[j]*p[j]>i)
            np++;
    }

    fprintf(g,"%d\n",np);

    fclose(f);
    fclose(g);
}