Pagini recente » Cod sursa (job #354421) | Cod sursa (job #2679253) | Cod sursa (job #108907) | Cod sursa (job #3256021) | Cod sursa (job #1454612)
#include <fstream>
#include <math.h>
using namespace std;
unsigned ciur[2000005>>6];
#define isComposite(n) (ciur[n>>6]&(1<<((n>>1)&31)))
#define makeComposite(n) (ciur[n>>6] |= (1<<((n>>1)&31)))
int main()
{
int n,crossn,i,j,k,c;
ifstream f("ciur.in");
ofstream g("ciur.out");
f>>n;
crossn = sqrt(n);
c = 1;
for(i=3;i<=crossn;i=i+2){
if(!isComposite(i)){
for(j=i*i,k=i<<1;j<=n;j=j+k){
makeComposite(j);
}
}
}
for(i=3;i<=n;i=i+2){
if(!isComposite(i)){
c++;
}
}
g<<c;
}