Description

小X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感。小X 认为,质数是一切自然数起源的地方。
在小X 的认知里,质数是除了本身和1 以外,没有其他因数的数字。
但由于小X 对质数的热爱超乎寻常,所以小X 同样喜欢那些虽然不是质数,但却是由两个质数相乘得来的数。
于是,我们定义,一个数是小X 喜欢的数,当且仅当其是一个质数,或是两个质数的乘积。
而现在,小X 想要知道,在L 到R 之间,有多少数是他喜欢的数呢?

Input

第一行输入一个正整数Q,表示询问的组数。
接下来Q 行。包含两个正整数L 和R。保证L≤R。

Output

输出Q 行,每行一个整数,表示小X 喜欢的数的个数。

Sample Input

输入1:

1
1 6

输入2:

10
282 491
31 178
645 856
227 367
267 487
474 697
219 468
582 792
315 612
249 307

输入3:

10
20513 96703
15236 86198
23185 78205
40687 48854
42390 95450
63915 76000
36793 92543
35347 53901
44188 76922
82177 90900

Sample Output

输出1:

5

样例1解释:

6以内的质数有2,3,5,而4=2*2,6=2*3。因此2,3,4,5,6都是小X 喜欢的数,而1 不是。

输出2:

97
78
92
65
102
98
114
90
133
29

输出3:

24413
23001
17784
2669
16785
3833
17712
6028
10442
2734

Data Constraint

Solution

  • 做法比较显然,首先线筛出质数来,

  • 接着枚举两个质数(乘积大于 10710^7 就退出),把其乘积也筛了。

  • 于是我们就得到一个判断一个数是否合法的布尔数组。

  • 那么要求一个区间,就做一遍前缀和即可。

Code

#include<cstdio>
using namespace std;
const int N=1e7+1;
int f[N];
bool bz[N];
inline int read()
{int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;
}
inline void write(int x)
{if(x>9) write(x/10);putchar(x%10+'0');
}
int main()
{for(int i=2;i<N;i++){if(!bz[i]) f[++f[0]]=i;for(int j=1;j<=f[0] && i*f[j]<N;j++){bz[i*f[j]]=true;if(i%f[j]==0) break;}}for(int i=1;i<=f[0];i++)for(int j=1;j<=f[0] && f[i]*f[j]<N;j++) bz[f[i]*f[j]]=false;f[0]=f[1]=0;for(int i=2;i<N;i++) f[i]=f[i-1]+(!bz[i]);int q=read();while(q--){int l=read(),r=read();write(f[r]-f[l-1]),putchar('\n');}return 0;
}

JZOJ 5458. 【NOIP2017提高A组冲刺11.7】质数相关推荐

  1. JZOJ 5441. 【NOIP2017提高A组冲刺11.1】序列

    Description 给定一个1~n的排列x,每次你可以将x1~xi翻转.你需要求出将序列变为升序的最小操作次数.有多组数据. Input 第一行一个整数t表示数据组数. 每组数据第一行一个整数n, ...

  2. JZOJ 5455. 【NOIP2017提高A组冲刺11.6】拆网线

    Description 企鹅国的网吧们之间由网线互相连接,形成一棵树的结构.现在由于冬天到了,供暖部门缺少燃料,于是他们决定去拆一些网线来做燃料.但是现在有K只企鹅要上网和别人联机游戏,所以他们需要把 ...

  3. JZOJ 5445. 【NOIP2017提高A组冲刺11.2】失格

    Description 胆小鬼连幸福都会害怕,碰到棉花都会受伤,有时还被幸福所伤. --太宰治<人间失格> 回顾我的一生,一共有n个事件,每一个事件有一个幸福值p_i. 我想用n-1条线把 ...

  4. JZOJ 5466. 【NOIP2017提高A组冲刺11.9】玩游戏

    Description 小A得了忧郁综合症,小B正在想办法开导她. 机智的小B决定陪着小A玩游戏,他从魔法的世界里变出一张无向联通图,每条边上都有边权.小B定义一条路径的权值为所有经过边中的最大权值, ...

  5. JZOJ 5462. 【NOIP2017提高A组冲刺11.8】好文章

    Description nodgd写了一篇文章,自认为这是一篇好文章.nodgd的文章由n个小写英文字母组成.文章的一个子串指的是文章中的一段连续的字母,子串的长度就是这一段的字母个数.nodgd在文 ...

  6. JZOJ 5463. 【NOIP2017提高A组冲刺11.8】证书

    Description Pulumi生活在P城的角落,而他的朋友们gjdy,oyski,tutuwai等等生活在P城的靠中心位置. P城很大,但它拥有优秀的城市结构,同时P城重视文化教育的发展,P城共 ...

  7. JZOJ 5460. 【NOIP2017提高A组冲刺11.7】士兵训练

    Description Input 第一行两个数n,q 表示士兵数以及阅兵次数. 接下来一行n-1 个整数,第i 个整数表示士兵i+1 的直属教官. 接下来n 行每行两个整数i i b ,l 描述一位 ...

  8. JZOJ 5459. 【NOIP2017提高A组冲刺11.7】密室

    Description 小X 正困在一个密室里,他希望尽快逃出密室. 密室中有N 个房间,初始时,小X 在1 号房间,而出口在N 号房间. 密室的每一个房间中可能有着一些钥匙和一些传送门,一个传送门会 ...

  9. JZOJ 5454. 【NOIP2017提高A组冲刺11.5】仔细的检查

    Description nodgd家里种了一棵树,有一天nodgd比较无聊,就把这棵树画在了一张纸上.另一天nodgd更无聊,就又画了一张. 这时nodgd发现,两次画的顺序是不一样的,这就导致了原本 ...

最新文章

  1. 从RBM(受限玻尔兹曼机)开始、到深度信念网络(DBN)再到自动编码器(AE)
  2. winpython使用教程-Win系统PyQt5安装和使用教程
  3. 【学习・求职必备】可谓是相当Awesomes了,这些综述类的github项目你不可错过!...
  4. iOS之深入解析CocoaPods的GitLab CI与组件自动化构建与发布
  5. ltrim函数_MySQL|trim() 函数用法
  6. npm安装时-S -D分别的意思
  7. centos下MySQL Workbench连接时崩溃的解决方法
  8. 10. IDENTITY属性使用小结
  9. matlab可以用python代替吗_Python 会不会替代 MATLAB
  10. 计算机主板图解内存插槽,图解电脑主板上的常见部件 -电脑资料
  11. set_drain_time和time类型数据介绍
  12. tooth的用法_tooth的复数形式
  13. 计算捐款总量 (10 分)
  14. ABP 源码学习随笔
  15. uefl计算机mbr分区方案,免重装系统 手把手教你MBR转GPT分区表-电脑教程
  16. 用Python制作登录界面
  17. SOAP协议规范介绍
  18. mysql对称_对于《由对称性解2
  19. ThinkPHP6之数据库操作上
  20. LabVIEW实现字符串加密处理

热门文章

  1. Python学习笔记:Day 6 配置文件
  2. Python学习笔记:面向对象编程(1)
  3. 链表反转相关的题(C++模板)
  4. Softmax vs. SoftmaxWithLoss 推导过程
  5. leetcode_zigzag conversion
  6. [云炬python3玩转机器学习] 5-3简单线性回归的实现
  7. 3DSlicer6:编译、调试、规范化的开发
  8. 独立成分分析ICA系列1:意义
  9. ASP.Net全局变量的设置和读取方法
  10. opengl从入门到精通