Cod sursa(job #385791)
Utilizator | 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;
}