Cod sursa(job #385791)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 23 ianuarie 2010 15:04:02
Problema Ciurul lui Eratosthenes Scor 30
Compilator c Status done
Runda Arhiva educationala Marime 0.51 kb
#include<stdio.h>
 FILE *f,*g;
 long a[2000001];
 int ciur(int nr){
     long i,j;
     long n=0;
     double d;
     i=1;
     d=sqrt(nr);
     while(i<=d){
         do{
             i++;
         }while(a[i]);
         for(j=i*i;j<=nr;j+=i) a[j]=1;
     }
     for(i=1;i<=nr;i++) if(!a[i]) n++;
     return n;
 }
 int main(){
     f=fopen("ciur.in","r");
     g=fopen("ciur.out","w");
     long nr;
     fscanf(f,"%ld",&nr);
     fprintf(g,"%ld\n",ciur(nr)-1);
     fclose(g);
     return 0;
 }