小x的质数(线性O(n)筛素数)
小x的质数
题目描述
小 X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感。小 X 认为,质数是一切自然数起源的地方。
在小 X 的认知里,质数是除了本身和 11 以外,没有其他因数的数字。
但由于小 X 对质数的热爱超乎寻常,所以小 X 同样喜欢那些虽然不是质数,但却是由两个质数相乘得来的数。
于是,我们定义,一个数是小 X 喜欢的数,当且仅当其是一个质数,或是两个质数的乘积。
而现在,小 X 想要知道,在 LL 到 RR 之间,有多少数是他喜欢的数呢?
输入格式
第一行输入一个正整数 QQ,表示询问的组数。
接下来 QQ 行。包含两个正整数 LL 和 RR。保证 L \le RL≤R。
输出格式
输出 QQ 行,每行一个整数,表示小 X 喜欢的数的个数。
数据范围与约定
样例
样例解释 1
66 以内的质数有 2,3,52,3,5,而 4=2 * 2,6 = 2 * 34=2∗2,6=2∗3。因此 2,3,4,5,62,3,4,5,6 都是小 X 喜 欢的数,而 1 不是。
样例输入1
- 1
- 1 6
样例输出1
- 5
样例输入2
- 10
- 282 491
- 31 178
- 645 856
- 227 367
- 267 487
- 474 697
- 219 468
- 582 792
- 315 612
- 249 307
样例输出2
- 97
- 78
- 92
- 65
- 102
- 98
- 114
- 90
- 133
- 29
样例输入3
- 10
- 20513 96703
- 15236 86198
- 23185 78205
- 40687 48854
- 42390 95450
- 63915 76000
- 36793 92543
- 35347 53901
- 44188 76922
- 82177 90900
样例输出3
- 24413
- 23001
- 17784
- 2669
- 16785
- 3833
- 17712
- 6028
- 10442
- 2734
code
- #include<cstdio>
- #include<cmath>
- const int MAXN = ;
- bool lk[MAXN],noprime[MAXN];
- int prime[MAXN];
- int sum[MAXN];
- int read() {
- int x = ,f = ;char ch = getchar();
- for (; ch<''||ch>''; ch = getchar())
- if (ch=='-') f = -;
- for (; ch>=''&&ch<=''; ch = getchar())
- x = x*+ch-'';
- return x*f;
- }
- int main() {
- int tot = ;
- for (int i=; i<=; i++) {
- if (!noprime[i]) {
- prime[++tot]=i;
- lk[i] = true;
- for (int j=; j<=tot && i*prime[j]<=; j++) {
- noprime[i*prime[j]] = true;
- lk[i*prime[j]] = true;
- }
- }
- else {
- for (int j=; j<=tot&&i*prime[j]<=; j++) {
- noprime[i*prime[j]] = true;
- if(i % prime[j] == ) break ;
- }
- }
- }
- for (int i=; i<=; ++i) {
- if (lk[i]) sum[i] = sum[i-]+;
- else sum[i] = sum[i-];
- }
- int L,R,q = read();
- while (q--) {
- L = read();R = read();
- printf("%d\n",sum[R]-sum[L-]);
- }
- return ;
- }
小x的质数(线性O(n)筛素数)的更多相关文章
- [Luogu]A%BProblem——线性筛素数与前缀和
题目描述 题目背景 题目名称是吸引你点进来的[你怎么知道的] 实际上该题还是很水的[有种不祥的预感..] 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m接下来n行, ...
- 常州模拟赛d2t1 小X的质数
题目背景 小 X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的 情感.小 X 认为,质数是一切自然数起源的地方. 题目描述 在小 X 的认知里,质数是除了本身和 1 以外,没有其他因 ...
- C++ 线性筛素数
今天要写一篇亲民的博客了,尽力帮助一下那些不会线性筛素数或者突然忘记线性筛素数的大佬. 众所周知,一个素数的倍数肯定不是素数(废话).所以我们可以找到一个方法,普通的筛法(其实不算筛,普通的是判断一个 ...
- 洛谷P3383 【模板】线性筛素数
P3383 [模板]线性筛素数 256通过 579提交 题目提供者HansBug 标签 难度普及- 提交 讨论 题解 最新讨论 Too many or Too few lines 样例解释有问题 ...
- 洛谷 P3383 【模板】线性筛素数
P3383 [模板]线性筛素数 题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入输出格式 输入格式: 第一行包含两个正整数N.M,分别表示查询的范 ...
- 计蒜客NOIP模拟赛4 D1T1 小X的质数
小 X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感.小 X 认为,质数是一切自然数起源的地方. 在小 X 的认知里,质数是除了本身和 1以外,没有其他因数的数字. 但由于小 X ...
- 欧拉筛法模板and 洛谷 P3383 【模板】线性筛素数(包括清北的一些方法)
题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入格式 第一行包含两个正整数N.M,分别表示查询的范围和查询的个数. 接下来M行每行包含一个不小于1 ...
- Goldbach's Conjecture POJ - 2262 线性欧拉筛水题 哥德巴赫猜想
题意 哥德巴赫猜想:任一大于2的数都可以分为两个质数之和 给一个n 分成两个质数之和 线行筛打表即可 可以拿一个数组当桶标记一下a[i] i这个数是不是素数 在线性筛后面加个装桶循环即可 #inc ...
- 洛谷 P3383 【模板】线性筛素数-线性筛素数(欧拉筛素数)O(n)基础题贴个板子备忘
P3383 [模板]线性筛素数 题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入输出格式 输入格式: 第一行包含两个正整数N.M,分别表示查询的范 ...
随机推荐
- 微信android手机中点击大图片会自动放大图片
自己使用的是微信Android客户端,使用img标签的src属性将图片设置好了以后,在微信中调试,点击图片竟然放大,自己没写放大图片的方法,也没有调用wx.previewImage()方法,最后查找, ...
- jQuery的一些备忘
操作元素的样式 主要包括以下几种方式: $("#msg").css("background"); //返回元素的背景颜色 $("#msg") ...
- 多线程(Thread、线程创建、线程池)
第1章 多线程 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程 ...
- new() 与new
一般写的时候,new对象都要加()
- Servlet中的初始化参数、上下文参数、以及@Resource资源注入
配置初始化参数.上下文参数.以及使用@Resource注解进行资源注入,目的是为了降低代码的耦合度.当项目需求进行变更的时候,不需要反复更改源代码,只需更改web.xml文件即可. 一:Servlet ...
- 个人博客 attack.cf
新开了个emlog搭的博客 地址:attack.cf 主要分享一下网络安全方面的东西和一些精品资源 欢迎来访
- HBase数据模型(2)
HBase数据模型(1) HBase数据模型(2) 1.0 HBase的版本version,是一个用长整型表示的.由Rowkey.Column(列族和列).Version组合在一起称为HBase中的一 ...
- Java多线程常见问题
1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和 ...
- ZOJ 3469 Food Delivery (区间DP,经典)
题意: 在x轴上有一家外卖餐馆,有n个顾客站在x轴上不同坐标上且叫了外卖,每个人的脾气不同,每1分钟没有收到外卖就会增加Fi点愤怒值,而外卖小哥的车是有速度的v-1/分钟,问怎样的送餐次序会让所有顾客 ...
- 【exFat】利用命令提示符在windows 7 及 windows server 2008 r2 中将卷(分区)格式化为exFAT
步骤 运行cmd.exe: 查看磁盘信息.输入diskpart并回车: 选择磁盘.输入select disk 0(“0”代表要选择的磁盘号)并回车: 查看所选硬盘的分区.输入list partitio ...