【题目链接】

http://poj.org/problem?id=2689

【算法】

我们知道,一个在区间[l,r]中的合数的最小质因子必然不超过sqrt(r)

那么,先暴力筛出1-50000中的质数,对于每个询问,用筛出的质数标记[l,r]中的合数,即可

【代码】

#include <algorithm>
#include <bitset>
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <limits>
#include <list>
#include <map>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <utility>
#include <vector>
#include <cwchar>
#include <cwctype>
#include <stack>
#include <limits.h>
using namespace std;
#define MAXP 50000
#define MAXD 1000010
const int INF = 2e9; int i,j,last,mx,mn,l,r,L,U;
vector<int> P;
bool not_prime[MAXD];
pair<int,int> C,D;
bool flag; inline void init()
{
int i,j,tmp;
static int f[MAXP+];
for (i = ; i <= MAXP; i++)
{
if (!f[i])
{
P.push_back(i);
f[i] = i;
}
for (j = ; j < P.size(); j++)
{
tmp = i * P[j];
if (tmp > MAXP) break;
f[tmp] = P[j];
if (f[i] == P[j]) break;
}
}
} int main() { init();
while (scanf("%d%d",&L,&U) != EOF)
{
memset(not_prime,false,sizeof(not_prime));
flag = false;
last = -;
mx = ; mn = INF;
for (i = ; i < P.size(); i++)
{
if (L % P[i] == ) l = L / P[i];
else l = L / P[i] + ;
r = U / P[i];
for (j = max(l,); j <= r; j++) not_prime[P[i]*j-L] = true;
}
if (L == ) not_prime[] = true;
for (i = ; i <= U - L; i++)
{
if (!not_prime[i])
{
if (last == -)
{
last = i;
continue;
}
if (i - last < mn)
{
flag = true;
mn = i - last;
C = make_pair(last+L,i+L);
}
if (i - last > mx)
{
flag = true;
mx = i - last;
D = make_pair(last+L,i+L);
}
last = i;
}
}
if (flag) printf("%d,%d are closest, %d,%d are most distant.\n",C.first,C.second,D.first,D.second);
else printf("There are no adjacent primes.\n");
} return ; }

【POJ 2689】 Prime Distance的更多相关文章

  1. 一本通1619【例 1】Prime Distance

    1619: [例 1]Prime Distance 题目描述 原题来自:Waterloo local,题面详见 POJ 2689 给定两个整数 L,R,求闭区间 [L,R] 中相邻两个质数差值最小的数 ...

  2. 【POJ - 3126】Prime Path(bfs)

    Prime Path 原文是English 这里直接上中文了 Descriptions: 给你两个四位的素数a,b.a可以改变某一位上的数字变成c,但只有当c也是四位的素数时才能进行这种改变.请你计算 ...

  3. 【POJ 1741】Tree

    Tree Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 11570   Accepted: 3626 Description ...

  4. 【POJ 2983】Is the Information Reliable?(差分约束系统)

    id=2983">[POJ 2983]Is the Information Reliable? (差分约束系统) Is the Information Reliable? Time L ...

  5. bzoj 2295: 【POJ Challenge】我爱你啊

    2295: [POJ Challenge]我爱你啊 Time Limit: 1 Sec  Memory Limit: 128 MB Description ftiasch是个十分受女生欢迎的同学,所以 ...

  6. 【链表】BZOJ 2288: 【POJ Challenge】生日礼物

    2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 382  Solved: 111[Submit][S ...

  7. BZOJ2288: 【POJ Challenge】生日礼物

    2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 284  Solved: 82[Submit][St ...

  8. BZOJ2293: 【POJ Challenge】吉他英雄

    2293: [POJ Challenge]吉他英雄 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 80  Solved: 59[Submit][Stat ...

  9. BZOJ2287: 【POJ Challenge】消失之物

    2287: [POJ Challenge]消失之物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 254  Solved: 140[Submit][S ...

随机推荐

  1. ThinkPHP---案例2--部门管理功能

    [一]部门列表展示 分析: ①控制器DeptController.class.php ②方法showList(不要使用list方法,因为list是关键词) ③模板文件:showList.html 下面 ...

  2. 01Microsoft SQL Server

    Microsoft SQL Server Microsoft SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越膝上型 ...

  3. 使用Java中Calendar类测试当前年月日

    import java.util.Calendar; public class time { public static void main(String[] args) { Calendar cal ...

  4. JavaScript--小白入门篇1

    一.JavaScript简介 1.1 JavaScript的用途   JavaScript用来制作web页面交互效果,提升用户体验.    简单列出几个JavaScript能够制作的页面效果,它能干什 ...

  5. TestNG参数化测试

    参数化有两种方法: 第一种:在xml文件中声明 第二种:用@DataProvider注解 先介绍第一种方法: ParameterTest类:用@Parameters({"name" ...

  6. 解决windows安装TensorFlow2.0beta版本时ERROR: Cannot uninstall 'wrapt'问题

    pip install -U --ignore-installed wrapt enum34 simplejson netaddr 参考:https://bugs.launchpad.net/rall ...

  7. 洛谷 2176 [USACO14FEB]路障Roadblock

    [题意概述] 修改图中任一一条边的边权,使其加倍,问怎样使修改后图中的1~n的最短路最大.输出最短路的增量. [题解] 先跑一遍dijkstra求出1~n的路径长度,记录下经过的边.枚举这些边进行修改 ...

  8. 【转】sizeof()用法总结

    传送门:https://blog.csdn.net/u011677209/article/details/52837065

  9. 【Codeforces 1073D】Berland Fair

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 我们可以从左到右枚举一轮. 定义一个cost表示这一轮花费的钱数 如果cost+a[i]<=T那么就可以买它,并且买下它(模拟题目要求) ...

  10. 【Codeforces 159B】Matchmaker

    [链接] 我是链接,点我呀:) [题意] 笔和笔盖 笔有颜色和直径 笔盖也有颜色和直径 笔盖和笔如果直径相等 那么称为good 如果笔盖和笔直径相等.颜色也相等,那么称为very good 问你怎样安 ...