洛谷 1865 素数筛法
时间:2019-02-19
本文章向大家介绍洛谷 1865 素数筛法,主要包括洛谷 1865 素数筛法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
https://www.luogu.org/problemnew/show/P1865
题目背景
题目名称是吸引你点进来的
实际上该题还是很水的
题目描述
区间质数个数
输入输出格式
输入格式:
一行两个整数 询问次数n,范围m
接下来n行,每行两个整数 l,r 表示区间
输出格式:
对于每次询问输出个数 t,如l或r∉[1,m]输出 Crossing the line
输入输出样例
输入样例#1: 复制
2 5 1 3 2 6
输出样例#1: 复制
2 Crossing the line
说明
【数据范围和约定】
对于20%的数据 1<=n<=10 1<=m<=10
对于100%的数据 1<=n<=1000 1<=m<=1000000 -10^9<=l<=r<=10^9 1<=t<=1000000
思路:考察的是素数筛法,代码提供了两种方法,一种是欧拉筛法,一种是埃氏筛法的改进。前缀和数组记录结果效率会更高。
贴一篇素数筛的博客,这里不再赘述:https://blog.csdn.net/xiji333/article/details/86580090
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include<cmath>
#define MAX 1000005
using namespace std;
int prime[MAX];
int vis[MAX];
int sum[MAX];
void Prime()//欧拉筛
{
int k=-1;
vis[1]=1;
sum[1]=0;
for(int i=2;i<=MAX;i++)
{
if(!vis[i])//是素数
{
prime[++k]=i;
sum[i]=sum[i-1]+1;
}
else
sum[i]=sum[i-1];
for(int j=0;j<=k&&i*prime[j]<=MAX;j++)
{
vis[i*prime[j]]=1;
if(i%prime[j]==0)
break;
}
}
}
void IPrime()//埃氏筛法改进
{
vis[1]=1;
sum[1]=0;
int t=sqrt(MAX+0.5);
for(int i=2;i<=t;i++)
{
if(!vis[i])
{
sum[i]=sum[i-1]+1;
for(int j=i*i;j<=MAX;j+=i)
vis[j]=1;
}
else
sum[i]=sum[i-1];
}
for(int i=t+1;i<=MAX;i++)
{
if(vis[i])
sum[i]=sum[i-1];
else
sum[i]=sum[i-1]+1;
}
}
int main()
{
//Prime();
IPrime();
int n,m;
scanf("%d%d",&n,&m);
while(n--)
{
int l,r;
scanf("%d%d",&l,&r);
if(l<1||r>m)
printf("Crossing the line\n");
else
{
printf("%d\n",sum[r]-sum[l-1]);
}
}
return 0;
}
- SQLite 预写式日志
- java调用.net asmx / wcf
- mybatis3.2.8 与 hibernate4.3.6 混用
- mybatis的物理分页:mybatis-paginator
- 使用 WMI 进行诊断WCF
- java:快速文件分割及合并
- 暴涨210倍的一个数字货币正悄无声息崛起
- QT Creator 快速入门教程 读书笔记(一)
- .NET程序优化(GCServer )
- redis 学习笔记(4)-HA高可用方案Sentinel配置
- oracle: job使用
- velocity模板引擎学习(2)-velocity tools 2.0
- java:如何用代码控制H2 Database启动
- 游戏开发完整学习路线(各个版本都有)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- elk基于jolokia监控springboot应用jvm方案
- elasticsearch集群更换节点操作
- 对storm1.2.3并行度的理解
- RabbitMQ集群搭建过程
- java中的reference(一): GC与4种基本的Reference(强软弱虚)
- java中的reference(三): FinalReference和Finalizer的源码分析
- 【ceph】性能测试工具cosbench(1)
- linux命令tree的使用
- 腾讯云V3签名方法之iOS
- Go语言学习之 panic 和 recover
- Go语言学习之函数
- 【Spark Operator】webhook的分析
- 图解人脸识别算法facenet系列(一)
- Go 语言学习之 struct
- Go 语言学习之map