Cod sursa(job #147298)

Utilizator skyelHighScore skyel Data 2 martie 2008 19:35:33
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<stdio.h>
#define input "ciur.in"
#define output "ciur.out"
#define Nmax 2000005
char x[Nmax];
int main()
	 {
	 freopen(input,"r",stdin);
	 freopen(output,"w",stdout);
	 int cnt=1000,n,nr=0,rsp[1025],j;
	 scanf("%d",&n);
	 for(int i=2;i<=n;++i)
		  {
		  if(x[i]!='0')
				{
				nr++;
				for(j=i*i;(j<=n)&&(i<3000);j+=i) x[j]='0';
				}
		  }
	 if(nr<cnt)
		  cnt=nr;
	 for(int i=n;cnt>=1;--i)
		  if(x[i]!='0')
				{
				rsp[cnt]=i;
				cnt--;
				}
		  
	 printf("%d\n",nr);
	 for(int i=1; (i<=nr) && (i<=1000); i++) printf("%d ",rsp[i]);
	 return 0;
	 }