#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; typedef long long int ll; typedef pair P; const int MAX=400000;//sqrt(n)よりちょっと大 bitset isprime; void sieve(){ for(int i=3; i divs, dsq; inline ll idx(ll x){ return (x<=sq)?x-1:(ll)divs.size()-n/x; } void calc(){ sq=0; pim=0; divs.clear(); dsq.clear(); fill(p, p+MAX, 0); while((sq+1)*(sq+1)<=n) sq++; for(int i=1; i<=sq; i++) divs.push_back(i); for(int i=sq; i>=1; i--) divs.push_back(n/i); divs.erase(unique(divs.begin(), divs.end()), divs.end()); dsq.resize(divs.size()); for(int i=0; i primecount(){ vector dp=divs; vector pis(divs.size(), -1); int l; for(l=0; divs[l]=l; j--){ int k=idx(divs[j]/p[i-1]); if(pis[k]!=-1){ dp[j]-=pis[k]-i+2; }else{ dp[j]-=dp[k]; } } for(int j=l; j>l>>r; sieve(); auto pi=[&](ll r){ if(r==0) return 0ll; n=r; calc(); auto v=primecount(); return v.back(); }; cout<