#pragma once
#include<vector>namespacehaar_lib{classeratosthenes_sieve{std::vector<bool>is_prime_;public:eratosthenes_sieve(){}eratosthenes_sieve(intMAX):is_prime_((MAX+1)/2,true){is_prime_[0]=false;for(inti=3;i*i<=MAX;i+=2){if(notis_prime_[i/2])continue;for(intj=i*i;j<=MAX;j+=2*i){is_prime_[j/2]=false;}}}booloperator()(inti)const{if(i==2)returntrue;if(i%2==0)returnfalse;returnis_prime_[i/2];}};}// namespace haar_lib