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; ...
随机推荐
- 使用Mybatis plus xml 记录过程
<select id="selectByConditions" resultType="com.springboot.domain.DemoQueryModel&q ...
- Java多线程编程技术方案原理
一 ,多线程相关的一些概念 1,线程和进程: 线程指的是进程中一个单一顺序的控制流, 进程中可以并发多个线程,每条线程并行执行不同的任务,被认为是一个计算资源的集合.进程不能被任务是一个应用,因为有些 ...
- oralce sql 缓存查询及删除
--缓存查询语句 V$SQLAREA 视图记录sql 执行情况(加载次数/用时/Id....) 常用字段 ADDRESS:SQL语句在SGA中的地址. 这两列被用于鉴别SQL语句,有时,两条不同的语句 ...
- navicat图形工具和pymysql模块的使用
一 Navicat 在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图形界面的形式操作MySQL数据库 官网下载:http ...
- python 查找文件夹下以特定字符开头的某类型文件 - os.walk
Python os.walk() 方法 os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下.os.walk() 方法是一个简单易用的文件.目录遍历器,可以帮助我们高效的处 ...
- 爬qqhentai
import requestsfrom bs4 import BeautifulSoupimport timeimport reimport osimport randomagentlist = [& ...
- VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory.
macOS VirtualBox Bridged Adapter 不能用 I'm running macOS High Sierra 10.13.1 and VirtualBox 5.2.2. Thi ...
- nginx ip段限制
deny 123.0.0.0/8; // 封 123.0.0.1~123.255.255.254 这个段的ip deny 123.1.0.0/16; // 封 123.1.0.1~123.1.255. ...
- 安装TortoiseSVN. msi 报错 2503 2502错误
tortoisegit下载地址 https://tortoisegit.org/download/ [错误现象] 安装TortoiseSVN. msi 报错 2503 2502错误 [错误原因] 没有 ...
- 记一次mysql5.7保存Emoji表情
1.错误:SQLException; SQL state [HY000]; error code [1366]; Incorrect string value: '\xF0\x9F\x90\x96 \ ...