JZOJ5458. 【NOIP2017提高A组冲刺11.7】质数
来源:互联网 发布:iphone文件传输软件 编辑:程序博客网 时间:2024/05/17 08:38
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
数据范围
题解
求质数是很简单的,
用线筛就可以做到O(n)了。
现在就考虑质数之间两两相乘的数,
很显然,这个数除了它本身,1,和这两个质数以外没有其他因数了,
所以就不用担心会出现重复的,就直接乘起来就好了。
code
#include<cstdio>#include<cstring>#include<algorithm>#define N 10000003#define P putcharusing namespace std;void read(int &n){ int t=0,p=1;char ch; for(ch=getchar();!('0'<=ch && ch<='9');ch=getchar()) if(ch=='-') p=-1; for(;'0'<=ch && ch<='9';ch=getchar()) t=t*10+ch-'0'; n=t*p;}void write(int x){ if(x>9)write(x/10); P(x%10+48);}int T,l,r,ss[N],tot,s[N];bool bz[N],p[N];int main(){ freopen("prime.in","r",stdin); freopen("prime.out","w",stdout); memset(bz,1,sizeof(bz)); bz[1]=0; for(int i=2;i<=N-3;i++) { if(bz[i])ss[++tot]=i; for(int j=1;j<=tot && i*ss[j]<N;j++) { bz[i*ss[j]]=0; if(i%ss[j]==0)break; } } memset(p,1,sizeof(p)); p[1]=0; for(int i=2;i<=N-3;i++) { s[i]=s[i-1]; if(p[i])s[i]++; for(int j=1;j<=tot && i*ss[j]<N;j++) { if(!bz[i])p[i*ss[j]]=0; if(i%ss[j]==0)break; } } read(T); while(T--) { read(l);read(r); write(s[r]-s[l-1]); P('\n'); } return 0;}
- Jzoj5458【NOIP2017提高A组冲刺11.7】质数
- JZOJ5458. 【NOIP2017提高A组冲刺11.7】质数
- JZOJ 5458. 【NOIP2017提高A组冲刺11.7】质数
- 【NOIP2017提高A组冲刺11.7】总结
- Jzoj5459【NOIP2017提高A组冲刺11.7】密室
- Jzoj5460【NOIP2017提高A组冲刺11.7】士兵训练
- JZOJ 5459. 【NOIP2017提高A组冲刺11.7】密室
- JZOJ 5459. 【NOIP2017提高A组冲刺11.7】密室
- JZOJ5459. 【NOIP2017提高A组冲刺11.7】密室
- JZOJ 5460. 【NOIP2017提高A组冲刺11.7】士兵训练
- JZOJ5460. 【NOIP2017提高A组冲刺11.7】士兵训练
- 【NOIP2017提高A组冲刺11.1】总结
- 【NOIP2017提高A组冲刺11.2】总结
- 【NOIP2017提高A组冲刺11.3】总结
- 【NOIP2017提高A组冲刺11.4】总结
- 【NOIP2017提高A组冲刺11.1】荒诞
- 【NOIP2017提高A组冲刺11.2】失格
- 【NOIP2017提高A组冲刺11.5】轰炸
- Android SpannableString的工具类
- 高精度(从简版)
- 一些卡常技巧
- html/css实现居中的几个常用方法
- spring设置隔离事务属性
- JZOJ5458. 【NOIP2017提高A组冲刺11.7】质数
- Deepdive学习小记(第一节:简介)
- 库文件
- 输入/输出学生信息
- MySQL 学习教程(九)【整理】-外键
- 选择客栈X无线通讯网 二合一
- TestNG入门教程-3-Testng.xml文件介绍
- 犀牛Rhino教程合集37部
- 4比较三个数的大小输出最大的值并从小到大排序输出