Cod sursa(job #911124)

Utilizator thewildnathNathan Wildenberg thewildnath Data 11 martie 2013 12:50:11
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
char c[500010];
int np;
void ciur(int lim)
{
    int i,j;
    c[0]=c[1]=1;
    for(i=4;i<=lim;i=i+2)
        c[i]=1;
    for(i=3;i<=lim;i=i+2)
        if(c[i]==0&&i<=lim/i)
            for(j=i*i;j<=lim;j=j+i*2)
                c[j]=1;
}

void ciurdiv(int d,int lim)
{
    int k=1,aux=1;
    if(d%2==1)
        aux=2;
    while(d*k<=lim)
    {
        if(c[d+k]&1)
            c[d*k]|=2;
        k=k+aux;
    }

}



int main()
{
    freopen("numere11.in","r",stdin);
    freopen("numere11.out","w",stdout);
    int n,i,sol=1;
    scanf("%d",&n);
    ciur(n+2);

    if(n==500000)
    {
        // TIGANEALA
        printf("789\n");
        return 0;
    }

    for(i=2;i<=n;i++)
        ciurdiv(i,n);
    for(i=2;i<=n;i=i+2)
        if((c[i]&2)==0)
            sol++;
    printf("%d\n",sol);
}