/**********
author:chanjun2016
email:15755396353@163.com
***********/
#include <cstdio>
#include <algorithm>
using namespace std;
#define INF = 0x3f3f3f3f
const long long maxn = 1e12;
const long long M = 1e6;
const long long K = 8.1e4;
bool ext[M + 10];
int p[K+ 10];
int tot,num;
long long a[K];
void prime(){
for (int i = 2; i < M; ++i){
if (!ext[i]){
p[++tot] = i;
for (long long j = (long long)i*i; j < maxn; j *= i){
a[++num] = j;
}
}
for (int j = 1; j <= tot && i * p[j] < M; ++j){
ext[(long long)i * p[j]] = 1;
if (i % p[j] == 0){
break;
}
}
}
sort(a + 1,a + num + 1);
}
int main(){
prime();
int T;
scanf("%d",&T);
while (T--){
long long low,high;
scanf("%lld%lld",&low,&high);
long long *t = lower_bound(a + 1,a + num + 1,high);
long long ans = t - lower_bound(a + 1, t + 1, low);
printf("%lld\n", ans);
}
return 0;
}
uva10539
最新推荐文章于 2022-05-04 22:16:14 发布