#include<iostream>
#include<boost/array.hpp>
#include<boost/dynamic_bitset.hpp>
#include<boost/utility.hpp>
using namespace std;
using namespace boost;
int main(){
cin>>n;
dynamic_bitset<> db(n);
db.set();
for(dynamic_bitset<>::size_type i=db.find_next(1);i!=dynamic_bitset<>::npos;i=db.find_next(i)){
for(dynamic_bitset<>::size_type j=db.find_next(i);j!=dynamic_bitset<>::npos;j=db.find_next(j)){
if(j%i==0){
db[j]=0;
}
}
}
for(int i=db.find_next(1);i!=dynamic_bitset<>::npos;i=db.find_next(i)){
cout<<i<<" ";
}
cout<<endl;
system("pause");
return 0;
}
利用到了boost库中的dynamic_bitset它综合了c++标准中的vector<bool>和bitset的优点