Cod sursa(job #167374)

Utilizator MaGdUtZaVasile Maria-Magdalena MaGdUtZa Data 29 martie 2008 15:31:19
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include<stdio.h>

int n,i,j,kkt,k;

char a[2000000];

int prim(int n);

int main()
{
	freopen("ciur.in","r",stdin);
	freopen("ciur.out","w",stdout);

	scanf("%d",&n);

	for(i=2; i<=n; ++i)
	{
		if(a[i]==0)
		{
			if(prim(i))
			{
				++kkt;

				k=2;

				j=i*k;

				while(j<=n)
				{
					a[j]=1;

					++k;

					j=i*k;
				}
			}
			else

				a[i]=1;
		}
	}
	printf("%d",kkt);

	return 0;
}
int prim(int n)
{
	if(n==2 || n==3)

		return 1;

	if(n%2==0)

		return 0;

	for(int ii=3;ii*ii<=n; ii+=2)

		if(n%ii==0)

			return 0;

	return 1;
}