北京航空航天大学夏令营机试题
Posted 玛丽莲茼蒿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了北京航空航天大学夏令营机试题相关的知识,希望对你有一定的参考价值。
题目:给定闭区间[a,b] ,要求输出 素数的等差序列,三个以上才算是序列,例如 [100,200] 会输出 151 157 163 和167 173 179
再例如输入[1,100] 会有两个等差序列,3 5 7 和47 53 59。输出样式行末的空格保留。
样例输入:141 400
样例输出:151 157 163
167 173 179
199 211 223
251 257 263 269
367 373 379
#include<bits/stdc++.h>
using namespace std;
int isSu(int a)
int flag=1; //首先假定是素数
for(int i=2;i<=a-1;i++)
if(a%i==0)
flag=0; //不是素数
break;
if(flag==1)
return 1;
else
return 0;
int main()
int result[1000];
int p=0; //指针,记录素数写入的最后位置
int start,end;
cin>>start;
cin>>end;
for(int i=start;i<=end;i++)
if(isSu(i)==1) //i是素数
result[p]=i;
p++; //p也顺便记录了有多少个素数
int count=p;
p=0;
int last=0; //记录上一次最后一个输出了什么
/*--------找等差序列---------*/
while(p<count-2)
if(result[p+2]-result[p+1]==result[p+1]-result[p]) //存在等差数列,并且只少为3个数
if(last==result[p+1]) //前面也是等差数列
cout<<result[p+2]<<' ';
last=result[p+2];
p=p+1;
else
cout<<endl;
cout<<result[p]<<' '<<result[p+1]<<' '<<result[p+2]<<' ';
last=result[p+2];
p=p+1;
else
p=p+1;
return 0;
以上是关于北京航空航天大学夏令营机试题的主要内容,如果未能解决你的问题,请参考以下文章