Cod sursa(job #273437)

Utilizator bardaliviubarda liviu alexandru bardaliviu Data 8 martie 2009 16:13:03
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>
  
FILE *in, *out;   
bool sir[1000001];   
  
int main ()   
{   
    int n, i, j, np=1;   

    in=fopen("ciur.in", "r");   
    out=fopen("ciur.out", "w");   
  
    fscanf(in, "%d", &n);   
  
  
    for(j=3; j<=n; j+=2)   
        sir[(j-1)/2]=j;   
  
  
    for(i=3; i<=n; i+=2)   
    {   
        if(sir[(i-1)/2])   
        {   
            np++;   
            for(j=(i-1)/2+i; j<=n/2; j+=i)   
                sir[j]=0;   
        }   
    }   
  
    if(n==2)   
        fprintf(out, "%d", 1);   
  
    if(n==3)   
        fprintf(out, "%d", 2);   
  
    if(n>3)   
        fprintf(out, "%d", np);   
       
    fclose(in);   
    fclose(out);   
    return 0;   
}