北航2019机试题题目描述全解析以及参考代码

大家好,我是2019年北航考研的考生,在3月18号参加了北航的机考,特此在这个 根据自己的回忆给出题目描述,一个测试用例,样例输出,以及本人编写的参考代码,以及思路讲解。如果我可以得到题目的原本描述,会更新给大家的。

还有做几点说明,北航上机考试建议使用标准c编程,解释一下标准c编程,不能使用基于特定平台的库,例如windows.h,linux系统下的特定库,某个厂家自己开发出的库,这些都是编译不通过的。其他的库都是可以使用的。还有可以使用标准c++编程,可以使用STL(例如vector,set,queue,stack,map等等),可以使用<algorithm>库(例如sort()函数),可以使用c++的语言特性,例如重载,动态联编等等。(这个想说,有些学长学姐可能会说不能使用c++,特此声明,完全可以,像今年和去年的第二道题目,都比较难,涉及三叉树,用c++的库会方便不少)。


题目一:给定闭区间[a,b] ,要求输出 素数的等差序列,三个以上才算是序列,例如 [100,200] 会输出 151 157 163 和167 173 179

再例如输入[1,100]  会有两个等差序列,3 5 7 和47 53 59。输出样式行末的空格保留。

#include<stdio.h>
#include<math.h>
#include<stdlib.h>

int isPrime(int n)
{
    if(n==1) return 0;
    else if(n<5) return n<4;
    else
    {
        if(n%6!=5&&n%6!=1) return 0;
        int len = sqrt(n);
        for(int i=2; i<=len+1; i++)
            if(n%i==0) return 0;
        return 1;
    }
}
int getNextPrime(int n)
{
    while(1)
    {
        if(isPrime(n+1)) return n+1;
        else n++;
    }

}

int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    int first,second,tmp,dif;

    int x = a-1;
    while(x<=b)
    {
        first = getNextPrime(x);
        x = first;
        if(x>b) break;
        second = getNextPrime(x);
        x = second;
        if(x>b) break;
        dif = second - first;
        tmp = getNextPrime(x);
        x = tmp;

        if(x>b) break;
        if(tmp-second==dif)
        {
            printf("%d %d %d ",first,second,tmp);
            int tmp2 = second;
            while(tmp-tmp2==dif)
            {
                    tmp2 = tmp;
                    tmp = getNextPrime(x);
                    x = tmp;
                    if(x>b) break;
                   if(tmp-tmp2==dif) printf("%d ",tmp);
                    else x = tmp2;
            }
            printf("\n");
        }else{
            x = first;
        }
    }


}

样例输入:141 400

样例输出:151 157 163

                  167 173 179
                  199 211 223
                  251 257 263 269
                  367 373 379

题目解析:比较中规中矩的算法题,第一点是判断素数的函数,第二点是就是如何控制满足题目描述,并且输出正确的格式,我觉得唯一注意的问题就是注意判断1不是素数。

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值