Cod sursa(job #144823)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 27 februarie 2008 23:38:26
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <stdio.h>

int n, sol[1005], cnt, nr;
char ciur[2000002];

void erat()
{
	int i, j;
	for (i = 4; i <= n; i += 2) ciur[i] = 1;
	nr = 1;
	for (i = 3; i <= n; i += 2)
	{
		if (!ciur[i]) { for (j = 2; i * j <= n; j++) ciur[i * j] = 1; nr++;}
	}
}

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