niedziela, 8 stycznia 2012

Sito Eratostenesa

#include <iostream>
#include <bitset>
using namespace std;
 
#define N 590000000
bitset <N/2+1> t;
 
int main(){
        int i,j,k;
        printf("N=%d\n", N);
        for( i=1,k=3; k*k<N; k+=2,i++) 
                if( !t.test(i) )
                        for( j=(i*i+i)*2; j+j<N; j += 2*i+1 ) 
                                t.set(j);
        cout << t.size()-t.count()-1;
        return 0;
}

Brak komentarzy:

Prześlij komentarz