Cod sursa(job #295836)

Utilizator CiurelVictorCiurel Victor CiurelVictor Data 3 aprilie 2009 18:31:22
Problema Ciurul lui Eratosthenes Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 0.37 kb
#include<stdio.h>

unsigned int a[100000];
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;
}