Cod sursa(job #144652)

Utilizator devilkindSavin Tiberiu devilkind Data 27 februarie 2008 20:34:46
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

char a[2000002];
int pr[1002];
int n,i,j,cnt;

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

	scanf("%d",&n);

	cnt=0;

	for (i=2;i<=n;i++)
		{
		if (a[i]==1) continue;
		cnt++;
		if (i<10000) 
			for (j=i*i;j<=n;j+=i)
				a[j]=1;
		}

	pr[0]=0;

	for (i=n;i;i--)
		{
		if (a[i]==0) pr[++pr[0]]=i;
		if (pr[0]==1000) break;
		}
	
	reverse(pr+1,pr+pr[0]);

	printf("%d\n",cnt);

	for (i=1;i<=pr[0];i++)
		printf("%d ",pr[i]);
	return 0;		
}