Pagini recente » Cod sursa (job #2582112) | Cod sursa (job #1727162) | Cod sursa (job #1658379) | Cod sursa (job #45218) | Cod sursa (job #641632)
Cod sursa(job #641632)
#include <fstream>
using namespace std;
ifstream in("ciur.in");
ofstream out("ciur.out");
const int N=63000;
unsigned int n,v[N],bit[33];
inline bool viz(int x){
int a,b;
a=x/32;
b=x%32;
if(v[a]&bit[b])
return true;
return false;
}
inline void marcheaza(int x){
int a,b;
a=x/32;
b=x%32;
v[a]=v[a]|bit[b];
}
int main(){
int nrprime=0,i;
in>>n;
bit[0]=1<<31;
for(i=1;i<=31;i++){
bit[i]=(bit[i-1]>>1);
}
int j;
for(i=3;i*i<=n;i+=2){
if(viz(i)==false){
//nrprime++;
for(j=i*i;j<=n;j+=i){
marcheaza(j);
}
}
}
if(n>=2)
nrprime=1;
for(i=3;i<=n;i+=2){
if(viz(i)==false)
nrprime++;
}
out<<nrprime;
return 0;
}