Cod sursa(job #163267)
| Utilizator | Data | 21 martie 2008 20:58:39 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 30 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
/* ciurul lui eratosthene */
#include<stdio.h>
#include<math.h>
FILE *f=fopen("ciur.in","r");
FILE *g=fopen("ciur.out","w");
long n,v[20000];
int main()
{
fscanf(f,"%ld",&n);
long i,k;
k=1;
v[k]=2;
if(n>2)
{ int sw,j;
for(i=3;i<=n;i+=2)
{
j=1; sw=1;
while(j<=k&&v[j]<=sqrt(i))
if(i%v[j]==0)
{sw=0;break;}
else ++j;
if(sw)
v[++k]=i;
}
}
else if(n<2)
k=0;
fprintf(g,"%ld",k);
fcloseall();
return 0;
}
