#include<stdio.h>
int num[1000007];
int a [1000007];
const int p=1000001;
/*
2
1 2
1 1000000
*/
int main()
{
for(int i=2;i<p/i;i++){
if(!num[i]){
// a[i]=1;
for(int j=i*i;j<=p;j+=i) num[j]=1;//打上合数;
}
}
for(int i=2;i<=p;i++){
if(!num[i]){
a[i]=1;
for(int j=1;j*i<=p;j++){
a[j*i]=a[i]+a[j];
}
}
}
for(int i=1;i<=p;i++) a[i]+=a[i-1];
int k;
scanf("%d",&k);
while(k--)
{
int A,b;
scanf("%d %d",&A,&b);
printf("%d\n",a[b]-a[A-1]);
}
return 0;
}
相关文章
- 02-02九度OJ 1343:城际公路网 (最小生成树)
- 02-02重庆大学oj系统——习题
- 02-02[LeetCode OJ] Decode Ways
- 02-02[BZOJ1396] 识别子串 - 后缀自动机,线段树
- 02-02BZOJ 1396 识别子串
- 02-02ZUFE OJ 2289 God Wang II
- 02-02九度OJ1207
- 02-02LeetCode OJ 160. Intersection of Two Linked Lists
- 02-02Southern African 2001 Stockbroker Grapevine /// Floyd oj1345
- 02-02hdu_oj6573Traffic(暴力枚举)