Mai intai trebuie sa te autentifici.
Cod sursa(job #145147)
| Utilizator | Data | 28 februarie 2008 15:03:15 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.69 kb |
#include<stdio.h>
char nr[2001000];
int main(){
freopen("ciur.in","r",stdin);
freopen("ciur.out","w",stdout);
int n,i,j,sum;
scanf("%d",&n);
for(i=4;i<=n;i+=2)
nr[i]=1;
for(i=3;i<=n;i+=2){
if(nr[i]==0){
for(j=i+i;j<=n;j+=i)
nr[j]=1;
}
}
sum=1;
for(i=3;i<=n;i+=2){
if(nr[i]==0)
++sum;
}
printf("%d\n",sum);
if(sum<1000){
printf("2");
for(i=3;i<=n;i+=2)
if(nr[i]==0)
printf(" %d",i);
printf("\n");
}
else{
j=0;
for(i=n;j<1000;--i){
if(nr[i]==0)
++j;
}
++i;
printf("%d",i);
for(;i<=n;i+=2)
if(nr[i]==0)
printf(" %d",i);
printf("\n");
}
fclose(stdin);
fclose(stdout);
return 0;
}
