Cod sursa(job #153632)

Utilizator FlorianFlorian Marcu Florian Data 10 martie 2008 17:24:55
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.41 kb
#include<stdio.h>
FILE*f=fopen("ciur.in","r");
FILE*g=fopen("ciur.out","w");
char u[2000000/8+1];
int main()
 {
 int n,sol=0;
 fscanf(f,"%d",&n);
 int i,j;
 for(i=2;i<=n;i+=2)
  u[i>>3]|=(1<<(i&7));
 sol++;
 for(i=3;i<=n;i+=2)
  {
  if(!(u[i>>3]&(1<<(i&7))))
    {
    ++sol;
    for(j=i+i;j<=n;j+=i)
      {
      u[j>>3]|=(1<<(j&7));
      }
    }
  }
 fprintf(g,"%d\n",sol);
 return 0;
 }