Cod sursa(job #151591)

Utilizator mircea_infoSuciu Mircea-Gabriel mircea_info Data 8 martie 2008 14:01:49
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <stdio.h>

char a[2000005];
int sol[1002],k=0;
int n,nr=0;

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