Cod sursa(job #144534)

Utilizator gigi_becaliGigi Becali gigi_becali Data 27 februarie 2008 19:11:32
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
using namespace std;
#include <cstdio>
#include <bitset>

bitset<2000001>prime;
int sol[1001],ns;
int main()
{
    int n,i,j,nr=0;
    freopen("ciur.in","r",stdin);
    scanf("%d", &n);

    for(i=4;i<=n;i+=2) prime[i]=1;

    for(i=3;i*i<=n;i+=2)
	if(!prime[i])
	    for(j=i*i;j<=n;j+=(i<<1))
		prime[j]=1;
	

    freopen("ciur.out","w",stdout);
    for(i=n;i>=2;--i)
    {
	if(nr==1000)break;
	if(!prime[i])++nr,  sol[++ns]=i;
    }

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

    for(i=ns;i>=1;--i)
	 printf("%d ", sol[i]);
    printf("\n");



    return 0;
}