Cod sursa(job #201307)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 30 iulie 2008 13:01:35
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include<stdio.h>
#include<math.h>
#define MAX 2000005
int a[67000];

int main(){

    FILE *fin=fopen("ciur.in","r");
    FILE *fout=fopen("ciur.out","w");

    int N,k=0;

    fscanf(fin,"%d",&N);

    ++k;
    int i=2;
    for(int j=2;(long long)i*j<=N;j++) a[i*j/30]=a[i*j/30]|(1<<((i*j)%30));

    for(i=3;i<=N;i+=2)
        if((a[i/30]&(1<<(i%30)))==0){
            k++;
            for(int j=i;(long long)j*i<=N;j+=2) a[i*j/30]=a[i*j/30]|(1<<((i*j)%30));
            }


    fprintf(fout,"%d\n",k);






    fclose(fin);
    fclose(fout);

    return 0;
    }