打算重新刷一下数论题,忘了很多了,水平也很差,此题入手就不顺了,刷了一个早上,只是一个简单

的素数应用罢了。题意:找出区间长度不超过10^6的最近的素数和最远的素数(相邻的),

算法:数在int范围内,不可能全部一次筛出,所以先筛出50000以内的质数,其他整数(若是合数)必然

至少含有一个50000以内的质因子,所以,对每次区间,再筛,筛去区间中这些质数的倍数即可。

未1A原因:

1,题意要看清!

2,注意细节问题!以及特殊情况!

3.注意边界!虽然是整数范围,刚好在上界时候在for里循环再加的话就越界了,无法判断!

#include<iostream>  //49ms
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
bool notpri[50001]; vector<int>pri;
long long f,l;
void getpri() //先筛出部分质数
{
notpri[1]=1;
for(int i=2;i<=50000;i++)
{
while(i<=50000&¬pri[i]==1)i++;
pri.push_back(i);
for(int j=2*i;j<50001;j=j+i)
notpri[j]=1;
}
}
int nowpri[1000001]; //将区间f,l平移到0--l-f。
int main()
{
getpri();
while(~scanf("%lld%lld",&f,&l))
{
while(f<2)f++; //排除1的情况
for(long long i=f;i<=l;i++) //初始化
{
nowpri[i-f]=0;
}
int len=pri.size();
for(int i=0;i<len;i++) //筛去l--f之间的合数
{
long long start=f+(pri[i]-f%pri[i]);
if(f%pri[i]==0)start-=pri[i]; //起点注意一下,细节
if(start==pri[i])start+=pri[i];
for(long long j=start;j<=l;j=j+pri[i])
nowpri[j-f]=1; //j is not prime
}
int dis=0;
int mindis=1000001;int maxdis=-1;
long long maxi1=0,maxi2=0,mini2=0,mini1=0;
int mark1=1;long long pre=0;
for(long long i=f;i<=l;i++) //距离统计一下
{
if(nowpri[i-f]==0)
{
if(mark1)
{
mark1=0;pre=i;maxi1=maxi2=i;mini1=mini2=i;dis=1;continue;
}
if(dis>maxdis)
{
maxdis=dis;maxi1=pre;maxi2=i;
}
if(dis<mindis)
{
mindis=dis;mini1=pre;mini2=i;
}
pre=i; dis=0;
}
dis++;
}
if(maxdis<0)
printf("There are no adjacent primes.\n");
else
printf("%lld,%lld are closest, %lld,%lld are most distant.\n",mini1,mini2,maxi1,maxi2);
}
return 0;
}

最新文章

  1. AutoMapper搬运工之配置
  2. ubuntu 重启 nginx 失败,* Restarting nginx nginx ...fail!
  3. php-访问数据库
  4. 边工作边刷题:70天一遍leetcode: day 79
  5. 2015寒假ACM训练计划
  6. thinkphp扩展 根据前端批量建立字段
  7. 动态创建二维vector数组 C和C++ 及指针与引用的区别
  8. (转)DES、RSA、MD5、SHA、随机生成加密与解密
  9. 【Machine Learning】单参数线性回归 Linear Regression with one variable
  10. iOS开发-OC语言 (六)点语法和@property
  11. MapReduce-实践1
  12. 【ShaderToy】基础篇之再谈抗锯齿(antialiasing,AA)
  13. HTML块元素,行内元素,类,头部元素
  14. Docker学习(转)
  15. 【原创】Linux基础之gz文件相关操作
  16. Linux基础(一)流程控制
  17. MeasureOverride和ArrangeOverride 练手项目
  18. ios 中sqlite的用法
  19. 安卓本地化之SharedPreferences
  20. 带复杂类的list,list&lt;class&gt;前台往后台传输

热门文章

  1. 将vue-cli项目配置在nginx上
  2. IOS访问webserver接口
  3. Hibernate中的inverse和cascade属性
  4. 在docker容器中运行hello world!
  5. 分类IP地址(A、B、C类)的指派范围、一般不使用的特殊IP地址
  6. SQLite_Home
  7. Lampiao(dirtycow)脏牛漏洞复现
  8. The following signatures couldn&#39;t be verified because the public key is not available: NO_PUBKEY XXXX
  9. spring注解开发-IOC
  10. CF633H Fibonacci-ish II