北京航空航天大学夏令营机试题

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;
 

 

 

以上是关于北京航空航天大学夏令营机试题的主要内容,如果未能解决你的问题,请参考以下文章

华为机试题 HJHJ100等差数列

北理西交计算机夏令营机试题

北航机试题

北京理工大学复试上机--2020

华为OD机试题,用 Java 解航天器问题

2019年中南大学机试题d题