双指针—指定区间的最大合数区间
题目描述:
算法思想:
- 左边界:初始值如下
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;
}
双指针—指定区间的最大合数区间相关推荐
- STL区间成员函数及区间算法总结
STL区间成员函数及区间算法总结 在这里总结下可替代循环的区间成员函数和区间算法: 相比单元素遍历操作,使用区间成员函数的优势在于: 1)更少的函数调用 2)更少的元素移动 3)更少的内存分配 在区间 ...
- 简单区间问题 选择不相交区间 区间选点 区间覆盖问题解答及代码 C++
1. 选择不相交区间 数轴上有n个开区间 ( a i , b i ) (a_i, b_i) (ai,bi).选择尽量多个区间,使得这些区间没有公共点. 这是最简单的区间问题,很多区间问题都需要先排 ...
- 区间相关问题的学习: 最多不相交区间问题,区间选点问题与区间覆盖问题
区间相关问题包括: 1)最多不相交区间问题; 2)区间选点问题; 3)区间覆盖问题等. 最多不相交区间问题(又叫选择不相交区间,最大不相交覆盖等等),是指数轴上有n个开区间(a,b),选择尽量多个区间 ...
- R语言ggplot2可视化使用不连续的y轴、中断的Y轴来可视化数值分布差异很大的数据实战:把数据轴分为两个区间或者多个区间来匹配不同区间数据的可视化(因为有的数据可能10附近,有的数值可能1W附近)
R语言ggplot2可视化使用不连续的y轴.中断的Y轴来可视化数值分布差异很大的数据实战:把数据轴分为两个区间或者多个区间来匹配不同区间数据的可视化(因为有的数据可能10附近,有的数值可能1W附近) ...
- 插入区间之非合并区间的思路 leetcode57
输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8] 输出:[[1,2],[3,10],[12,16]] 开始的 ...
- LOJ #6279. 数列分块入门 3-分块(区间加法、查询区间内小于某个值x的前驱(比其小的最大元素))...
#6279. 数列分块入门 3 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计测试数据讨论 3 题目描述 给出一 ...
- leetcode 986 、56 ——区间问题(数组区间的并集和交集)
前缀和技巧 区间问题 1.区间的交集 1.1.题目 1.2.思路 1.3.题解 2.区间的并集 2.1.题目 2.2.思路 2.3.题解 区间问题 1.区间的交集 1.1.题目 原题链接 给定两个由一 ...
- lua 区间比较_自然区间匹配算法 - borey的个人空间 - OSCHINA - 中文开源技术交流社区...
什么是自然区间? 每一个单位都可以顺序访问的区间就称之为自然区间. 什么是自然区间匹配? 很多时候需要验证一个值,这个值的粒度很小或者说是异构的(从另外的模块获取的).配置这个值是否正确,我们通常会设 ...
- 区间素数 由N(N<=10000)个整数组成的数组,其中连续K(K<=200)个元素构成一个区间,称为K区间。一个K区间中所有素数的和记为Sk,请计算整个数组中,所有K区间中的最大Sk值,并输出。
由N(N<=10000)个整数组成的数组,其中连续K(K<=200)个元素构成一个区间,称为K区间.一个K区间中所有素数的和记为Sk,请计算整个数组中,所有K区间中的最大Sk值,并输出. ...
最新文章
- Python基础---线程
- SQL语句书可以提高执行效率的5种需要注意的书写方法
- java 自动封装_自动补全的java封装
- 13 个适合『中级开发者』练手的项目
- openresty完全开发指南_FDA拟修订群体药代动力学指南:医药商需要了解些什么?...
- Oracle入门(十四.6)之使用标量数据类型
- 前端学习(2571):为什么使用vuex
- LeetCode 1. 两数之和(哈希)
- CentOS7下LVS+Keepalived实现高性能高可用负载均衡
- 红橙Darren视频笔记 动画讲解 仿58同城 加载动画
- qt ui界面无法移动控件_都是知识点!移动端UI设计最基本的10种APP界面类型(上)...
- Python Tricks(二)—— 牛顿法求解平方根(最大整数)
- iText的一些总结
- 自动控制原理4.4---系统性能分析
- wireshark(2)- ethernet工具 xcap wireshark tcpdump
- 菜鸟学R语言(组间多重比较)
- Meet Apache Wicket
- 如何使用pdf转换器
- tomcat的夏时令问题(时区问题)
- matlab中调用simulink,MATLAB中的simulink是做什么的?说的通俗简单点 如何在matlab中打开simulink...