#include <iostream>
#include <vector>
using namespace std;
const int maxn=1000000+10;
typedef long long ll;
typedef unsigned long long llu;
int num[maxn]={0};
vector<ll> prime;
void init(){
for(llu i=2; i*i<maxn; i++)
for(llu j=i*i; j<maxn; j+=i)
num[j]=1;
for(llu i=2; i<maxn; i++)
if(!num[i])
prime.push_back(i);
}
ll solve(ll n){
ll ans =0;
for(int i = 0; i<prime.size(); i++){
ll u= prime[i] * prime[i];
if(u > n) break;
while(u<=n){
u *= prime[i];
ans++;
}
}
return ans;
}
int main(){
init();
int T, a, b;
cin>>T;
for(int j = 0; j< T; j++){
ll a,b;
cin>>a>>b;
cout<<(solve(b)-solve(a-1))<<endl;
}
return 0;
}
UVA10539 - Almost Prime Numbers
最新推荐文章于 2019-03-19 19:41:03 发布