Cod sursa(job #145688)
Utilizator | 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;
}