Cod sursa(job #145688)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 29 februarie 2008 10:28:54
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>

long N,i,j,q,p[500000],ok;

int main(){
    freopen("ciur.in","r",stdin);
    freopen("ciur.out","w",stdout);
    
    scanf("%ld",&N);
    
    p[1]=2;
    p[2]=3;
    q=2;
    i=5;
    while (i<=N){
          ok=1;
          j=1;
          while (p[j]*p[j]<=i){
                if (i%p[j]==0){ok=0;break;}
                j++;
          }
          if (ok)p[++q]=i;
          i+=2;
    }
    
    if (q>1000){
       printf("%ld\n",q);
       for (i=q-999;i<=q;i++)
           printf("%ld ",p[i]);
    }
    else{
         printf("%ld\n",q);
         for (i=1;i<=q;i++)
             printf("%ld ",p[i]);
    }
    
return 0;
}