Cod sursa(job #295838)
Utilizator | Data | 3 aprilie 2009 18:33:43 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 30 |
Compilator | c | Status | done |
Runda | Arhiva educationala | Marime | 0.36 kb |
#include<stdio.h>
unsigned int a[50000];
long n,nr,i,j;
int main()
{
freopen("ciur.in","r",stdin);
freopen("ciur.out","w",stdout);
scanf("%ld",&n);
for(i=3;i<=n;i+=2)
{
if(!(a[i/16]&1<<(i%16)))
{
nr++;
for(j=1;j<=n/i;j++)
if(!(a[j*i/16]&1<<(j*i%16)))
a[j*i/16]+=1<<((j*i)%16);
}
}
printf("%ld",nr+1);
return 0;
}