您的位置:首页 > 其它

uva10539

2016-02-06 11:44 211 查看
/**********
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: