题目描述:
算法思想:

  • 左边界:初始值如下
int pre=c,next=c,numLen=0,res=c;
  • 区间中:先求出质数,然后根据上一个质数pre和next质数的区间长度判定是否改变res和numLen。改变res和numLen即可改变最大合数区间(res+1,res+numLen);
 while((next<=d)&&(next>=c)){int flag = 1;// 判断next是否为素数 for(int i=2;i<=sqrt(next);i++){if(next%i==0){flag=0;break;}}// 为质数, pre除初始值外一定是质数 if(flag){int tmp = next-pre-1;if(numLen<tmp){numLen = tmp;res = pre;}pre=next;}// next移动 next++;}
  • 右边界:上一步在while循环中,只考虑了质数与质数之间的合数区间,没有考虑边界。执行完while循环后,还需要判定pre和d的区间长度,在判定是否对合数区间进行改变。
int tmp = d-pre-1;if(tmp>numLen){numLen = tmp;res = pre;}

完整代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;int main(){int c,d;cin>>c>>d;int pre=c,next=c,numLen=0,res=c;while((next<=d)&&(next>=c)){int flag = 1;// 判断next是否为素数 for(int i=2;i<=sqrt(next);i++){if(next%i==0){flag=0;break;}}// 为质数, pre除初始值外一定是质数 if(flag){int tmp = next-pre-1;if(numLen<tmp){numLen = tmp;res = pre;}pre=next;}// next移动 next++;}// 最后一个质数与右边界d的情况int tmp = d-pre-1;if(tmp>numLen){numLen = tmp;res = pre;}cout<<"合数区间"<<res+1<<' '<<res+numLen<<endl;         // pre为最大质数但不一定最大合数区间的左边质数 cout<<"个数"<<numLen<<endl;return 0;
}

双指针—指定区间的最大合数区间相关推荐

  1. STL区间成员函数及区间算法总结

    STL区间成员函数及区间算法总结 在这里总结下可替代循环的区间成员函数和区间算法: 相比单元素遍历操作,使用区间成员函数的优势在于: 1)更少的函数调用 2)更少的元素移动 3)更少的内存分配 在区间 ...

  2. 简单区间问题 选择不相交区间 区间选点 区间覆盖问题解答及代码 C++

    1. 选择不相交区间 数轴上有n个开区间 ( a i , b i ) (a_i, b_i) (ai​,bi​).选择尽量多个区间,使得这些区间没有公共点. 这是最简单的区间问题,很多区间问题都需要先排 ...

  3. 区间相关问题的学习: 最多不相交区间问题,区间选点问题与区间覆盖问题

    区间相关问题包括: 1)最多不相交区间问题; 2)区间选点问题; 3)区间覆盖问题等. 最多不相交区间问题(又叫选择不相交区间,最大不相交覆盖等等),是指数轴上有n个开区间(a,b),选择尽量多个区间 ...

  4. R语言ggplot2可视化使用不连续的y轴、中断的Y轴来可视化数值分布差异很大的数据实战:把数据轴分为两个区间或者多个区间来匹配不同区间数据的可视化(因为有的数据可能10附近,有的数值可能1W附近)

    R语言ggplot2可视化使用不连续的y轴.中断的Y轴来可视化数值分布差异很大的数据实战:把数据轴分为两个区间或者多个区间来匹配不同区间数据的可视化(因为有的数据可能10附近,有的数值可能1W附近) ...

  5. 插入区间之非合并区间的思路 leetcode57

    输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8] 输出:[[1,2],[3,10],[12,16]] 开始的 ...

  6. LOJ #6279. 数列分块入门 3-分块(区间加法、查询区间内小于某个值x的前驱(比其小的最大元素))...

    #6279. 数列分块入门 3 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计测试数据讨论 3 题目描述 给出一 ...

  7. leetcode 986 、56 ——区间问题(数组区间的并集和交集)

    前缀和技巧 区间问题 1.区间的交集 1.1.题目 1.2.思路 1.3.题解 2.区间的并集 2.1.题目 2.2.思路 2.3.题解 区间问题 1.区间的交集 1.1.题目 原题链接 给定两个由一 ...

  8. lua 区间比较_自然区间匹配算法 - borey的个人空间 - OSCHINA - 中文开源技术交流社区...

    什么是自然区间? 每一个单位都可以顺序访问的区间就称之为自然区间. 什么是自然区间匹配? 很多时候需要验证一个值,这个值的粒度很小或者说是异构的(从另外的模块获取的).配置这个值是否正确,我们通常会设 ...

  9. 区间素数 由N(N<=10000)个整数组成的数组,其中连续K(K<=200)个元素构成一个区间,称为K区间。一个K区间中所有素数的和记为Sk,请计算整个数组中,所有K区间中的最大Sk值,并输出。

    由N(N<=10000)个整数组成的数组,其中连续K(K<=200)个元素构成一个区间,称为K区间.一个K区间中所有素数的和记为Sk,请计算整个数组中,所有K区间中的最大Sk值,并输出. ...

最新文章

  1. Python基础---线程
  2. SQL语句书可以提高执行效率的5种需要注意的书写方法
  3. java 自动封装_自动补全的java封装
  4. 13 个适合『中级开发者』练手的项目
  5. openresty完全开发指南_FDA拟修订群体药代动力学指南:医药商需要了解些什么?...
  6. Oracle入门(十四.6)之使用标量数据类型
  7. 前端学习(2571):为什么使用vuex
  8. LeetCode 1. 两数之和(哈希)
  9. CentOS7下LVS+Keepalived实现高性能高可用负载均衡
  10. 红橙Darren视频笔记 动画讲解 仿58同城 加载动画
  11. qt ui界面无法移动控件_都是知识点!移动端UI设计最基本的10种APP界面类型(上)...
  12. Python Tricks(二)—— 牛顿法求解平方根(最大整数)
  13. iText的一些总结
  14. 自动控制原理4.4---系统性能分析
  15. wireshark(2)- ethernet工具 xcap wireshark tcpdump
  16. 菜鸟学R语言(组间多重比较)
  17. Meet Apache Wicket
  18. 如何使用pdf转换器
  19. tomcat的夏时令问题(时区问题)
  20. matlab中调用simulink,MATLAB中的simulink是做什么的?说的通俗简单点 如何在matlab中打开simulink...

热门文章

  1. A西D西 Pro 3
  2. 数独游戏的两种编程思路+代码
  3. 大角,快跑!!(国内科幻)
  4. 能被某些数整除的数的特征
  5. 2021最新Qt6开发环境(Qt Creator)安装以及卸载记录
  6. 适用于typecho的百度自动收录链接提交插件及代码操作,解放双手,再也不用手动提交收录了!
  7. div横向模拟滚动条,带懒加载
  8. python 装饰器实现事件绑定_Python装饰器实现几类验证功能做法实例
  9. MySQL分库分表面试知识点
  10. Elasticsearch的suggest联想提示查询实现