Cod sursa(job #145242)

Utilizator raduzerRadu Zernoveanu raduzer Data 28 februarie 2008 17:12:37
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include <stdio.h>

int n,a[2000100],nr,x,z,b[1010];

int main()
{
	freopen("ciur.in","r",stdin);
	freopen("ciur.out","w",stdout);
	scanf("%d",&n);
	int i;
	for (i=2; i<=n; ++i)
	{
		if (a[i]==0)
		{
			++nr;
			x=i;
			while (x+i<=n)
			{
				x+=i;
				a[x]=1;
			}
		}
	}
	printf("%d\n",nr);
	z=0;
	for (i=n; i>1; --i)
	{
		if (a[i]==0)
		{
			b[++z]=i;
			if (z==1000) break;
		}
	}
    for (i=z; i>0; --i) printf("%d ",b[i]);
	return 0;
}