Pagini recente » Cod sursa (job #368364) | Cod sursa (job #1640396) | Cod sursa (job #1724743) | Cod sursa (job #621840) | Cod sursa (job #629932)
Cod sursa(job #629932)
#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=2;i*i<=n;++i){
if(viz(i)==false){
//nrprime++;
for(j=i*i;j<=n;j+=i){
marcheaza(j);
}
}
}
for(i=2;i<=n;i++){
if(viz(i)==false)
nrprime++;
}
out<<nrprime;
return 0;
}