Cod sursa(job #154146)
| Utilizator | Data | 10 martie 2008 22:28:50 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.48 kb |
#include <stdio.h>
#define mx 1000010
long i,j,n;
long v[1010];
char p[mx];
void ciur(int max)
{
long i;
v[0]=1;
for (i=1; i*i*2+2*i<=max; i++)
{
j=i*i*2+2*i;
while (2*j+1<=max)
{
p[j]=1;
j=j+2*i+1;
}
}
for (i=(max-1)/2; i>0; i--)
if (p[i]==0)
v[0]++;
}
int main()
{
freopen("ciur.in","r",stdin);
freopen("ciur.out","w",stdout);
scanf("%ld",&n);
ciur(n);
printf("%ld\n",v[0]);
fclose(stdin);
fclose(stdout);
return 0;
}
