Cod sursa(job #147468)

Utilizator Mishu91Andrei Misarca Mishu91 Data 2 martie 2008 22:15:26
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<stdio.h>
#define Nmax 20000001

FILE *fin=freopen("ciur.in","r",stdin),
     *fout=freopen("ciur.out","w",stdout);
     
int n;
long sol[1024];
char viz[Nmax];
     

void solve()
{
  int cont=0;
  for(long i=2;i<=n;i++)
    if(!viz[i])
    {
     for(long j=i+i;j<=n;j+=i)
       viz[j]=1;
      cont++;
    }
  printf("%d\n",cont);
  int cnt=0;
  for(long i=n;i>1;i--)
  if(!viz[i])
  {
    sol[++cnt]=i;
    if(cnt==1000) break;
  }
  for(int i=cnt;i;i--)
    printf("%d ",sol[i]);
}
     
int main()
{
  scanf("%d",&n);
  solve();
  printf("\n");
  return 0;
}