Cod sursa(job #145318)

Utilizator MciprianMMciprianM MciprianM Data 28 februarie 2008 18:39:16
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<fstream.h>
//using namespace std;
char a[20001];
int N, cates,i,j,b[1001];
int main(){
  ifstream f("ciur.in");
  f>>N;
  f.close();
  a[0]=1;
  a[1]=1;
  for(i=3; i*i<=N;i++)
    if(a[i]==0){
      for(j=i*i;j<=N;j+=(i<<1))
	a[j]=1;
    }
  ofstream g("ciur.out");
  cates=1;
  b[1]=2;
  j=2;
  for(i=1;i<=N;i++)
    if(!a[i]&&(i&1)){
      cates++;
      if(j<=1000)
	b[j++]=i;
    }

  if(cates>1000){
    j=1000;
    for(i=N;j>0&&i>0;i--)
      if(!a[i]&&(i&1))
	b[j--]=i;
  }
  g<<cates<<'\n';
  if(cates>1000)  j=1001;
  for(i=1;i<j;i++)
    g<<b[i]<<' ';
  g<<'\n';
  g.close();
  return 0;
}