POJ--2689-C++
#include<cstring>
#include<utility>
#include<cmath>
#define N 1000000
#define M 50000
using namespace std;
int primes[M];
bool judge[M];
bool p[N];
int b[N];
int cnt;
void getPrimes(int n);
int main()
{
int L,U;
while(cin>>L>>U)
{
getPrimes(sqrt(U));
memset(p,true,sizeof p);
if(L==1)
p[0]=false;
for(int i=0;i<cnt;i++)
for(int j=ceil(L/primes[i]);j<=floor(U/primes[i]);j++)
if(j!=1)
p[primes[i]*j-L]=false;
pair<int,int> p1,p2;
int cnt2=0;
for(int i=0;i<U-L+1;i++)
if(p[i])
b[cnt2++]=(L+i);
cout<<"There are no adjacent primes."<<endl;
else
{
int max_nu=0,min_nu=10000;
for(int i=0;i<cnt2-1;i++)
{
if(b[i+1]-b[i]>max_nu)
{
max_nu=b[i+1]-b[i];
p1.first=b[i];
p1.second=b[i+1];
}
if(b[i+1]-b[i]<min_nu)
{
min_nu=b[i+1]-b[i];
p2.first=b[i];
p2.second=b[i+1];
}
}
cout<<p2.first<<","<<p2.second<<" are closest, ";
cout<< p1.first<<","<<p1.second<<" are most distant."<<endl;
}
}
return 0;
}
void getPrimes(int n)//用欧拉筛法筛出2到根号n里面的素数
{
memset(judge,false,sizeof judge);
cnt=0;
for(int i=2;i<=n;i++)
{
if(!judge[i])
primes[cnt++]=i;
for(int j=0;j<cnt&&i*primes[j]<=n;j++)
{
judge[i*primes[j]]=true;
if(i%primes[j]==0)
break;
}
}
POJ--2689-C++的更多相关文章
- poj 2689 Prime Distance(大区间素数)
题目链接:poj 2689 Prime Distance 题意: 给你一个很大的区间(区间差不超过100w),让你找出这个区间的相邻最大和最小的两对素数 题解: 正向去找这个区间的素数会超时,我们考虑 ...
- 大区间素数筛选(POJ 2689)
/* *POJ 2689 Prime Distance *给出一个区间[L,U],找出区间内容.相邻的距离最近的两个素数和距离最远的两个素数 *1<=L<U<=2147483647 ...
- POJ 2689 Prime Distance (素数+两次筛选)
题目地址:http://poj.org/problem?id=2689 题意:给你一个不超过1000000的区间L-R,要你求出区间内相邻素数差的最大最小值,输出相邻素数. AC代码: #includ ...
- POJ 2689 Prime Distance(素数筛选)
题目链接:http://poj.org/problem?id=2689 题意:给出一个区间[L, R],找出区间内相连的,距离最近和距离最远的两个素数对.其中(1<=L<R<=2,1 ...
- POJ 2689 - Prime Distance - [埃筛]
题目链接:http://poj.org/problem?id=2689 Time Limit: 1000MS Memory Limit: 65536K Description The branch o ...
- 【POJ 2689】 Prime Distance
[题目链接] http://poj.org/problem?id=2689 [算法] 我们知道,一个在区间[l,r]中的合数的最小质因子必然不超过sqrt(r) 那么,先暴力筛出1-50000中的质数 ...
- poj 2689 Prime Distance(大区间筛素数)
http://poj.org/problem?id=2689 题意:给出一个大区间[L,U],分别求出该区间内连续的相差最小和相差最大的素数对. 由于L<U<=2147483647,直接筛 ...
- 数学#素数筛法 HDU 4548&POJ 2689
找素数本来是很简单的问题,但当数据变大时,用朴素思想来找素数想必是会超时的,所以用素数筛法. 素数筛法 打表伪代码(用prime数组保存区间内的所有素数): void isPrime() vis[]数 ...
- poj 2689 Prime Distance (素数二次筛法)
2689 -- Prime Distance 没怎么研究过数论,还是今天才知道有素数二次筛法这样的东西. 题意是,要求求出给定区间内相邻两个素数的最大和最小差. 二次筛法的意思其实就是先将1~sqrt ...
- 素数筛 poj 2689
素数筛 #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; ...
随机推荐
- kubeadm安装
目录: 环境准备 所有节点安装docker 部署K8s集群 部署Dashboard 安装Harbor私有仓库 安装 master(2C/4G,cpu核心数要求大于2) 192.168.63.100 d ...
- 关于之前ecplices没法正常导入使用fx包的笔记
办法一:在java build path里的libraries里导入跟工作环境版本(或者ecplices的jdk版本)相配的jar包. 注:如果导入的包是要用fx的,可以不直接改整个程序的工作环境,可 ...
- cookie、session入门
一.cookie是由http制定的 二.使用方法 1.原始方法 使用request接受Cookies请求头 使用response发送set-Cookies响应头 2.常用方法 response.add ...
- make编译工具教程
make编译工具教程 背景 CC++编译起来目录结构多的情况需要脚本完成搜索编译-> make 第一课 第三课 makefile常用编程语法: 1 pipe管道符号,用;把命令相连接. 这样就 ...
- Python-celery介绍与快速上手
1.celery介绍: celery是一个基于Python开发的模块,可以帮助我们在开发过程中,对任务进行分发和处理. 详细介绍取自:Python之celery的简介与 ...
- 【情景题】NPDP经典题目(上)
[情景题]NPDP经典题目(上) 1.一家玩具生产企业正在为10-12岁的儿童开发一种"动力车".潜在风险:尽管该公司在玩具市场有着丰富的经验,但是这些经验主要是针对5岁以下儿童玩 ...
- fetch 小分析
includes\database\prefetch.inc line 385 public function fetchField($index = 0) { return $this->fe ...
- 华为交换机,改vlan的方法
telnet 登录1.1.1.111, 如果登录再到其他交换机,需要在用户状态,telnet其他的ip.不能在系统用户状态下跳转登录. sys改为系统用户 状态符由尖括号,改为方括号 display ...
- flink udaf函数
1.Flink-sql自定义UDAF函数 - 简书 (jianshu.com) 2.Flink SQL 自定义UDAF_k_wzzc的博客-CSDN博客_flink udaf 3.Flink 实践教程 ...
- 在Vue中实现app拍照-选取本地图库-图片上传成功后预览
基于Vue和uni-app实现手机app的功能实现和打包.拍照功能和选取本地图片使用的是HTML5的API 实现. 我为测试这个功能使用node写了个本地服务器,对于手机调试,可以通过连接同一个无线网 ...