您的位置:首页 > 编程语言

2017届腾讯校园招聘笔试——最后一道编程题

2016-09-14 11:01 369 查看
    前两天参加了腾讯的校园招聘笔试,题量比较大,选择题30道,没有简单的题目,都要仔细思考,大题四道,两道问答,两道编程,试卷总共时间120min。我是被虐了,反正。

当时对最后一道编程题一看就有思路,不难,但还是写错了,这点腾讯有点坑,试卷没有调试器,都不知道自己写错了还是写对了。下面是我的实现代码,还望各位读者不吝批评指正,毕竟第一次写博客公布代码!肯定有很多不规范处!

    输入一个整数,输出等于该整数的质数对。举例:比如输入整数10,则小于10的质数有(2,3,5,7),输出结果为2(5+5,3+7)

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define N 100

void FindPrime(int b[], int NUM,int &len)

{
int k = 0;
int number = 2;
int i;
for (number; number <= NUM; number++)
{  //1号for循环
//static int k = 0;
for (i = 2; i <= (int)sqrt((double)number); i++)
{  //2号for循环
if (number%i == 0)
{
break;
}
}
if (i>(int)sqrt((double)number))
{  //如果2号for循环结束时,if语句从来没执行,那么i的值肯定大于sqrt(number),所以用这个表达式来判断是否为素数
b[k] = number;
k++;
}
}
len = k;

}

int ResearchNumber(int b[],int NUM,int len)

{
int count = 0;
if (NUM % 2 == 0)
{
for (int i = 0; i < len; i++)
{
if (NUM / 2 == b[i])
{
count++;
}
}
}

for (int j = 0; j < len - 1; j++)
{
for (int k = j + 1; k < len; k++)
{
if (NUM == b[j] + b[k])
{
count++;
}
}
}
return count;

}

void main()

{
int b
= { 0 };//存储质数
int NUM;
printf("输入整数:");
scanf_s("%d", &NUM);
int len = 0;
int result = 0;
//找出小于该整数的质数存储在数组b[]中
FindPrime(b,NUM,len);

        //找到质数对
result=ResearchNumber(b,NUM,len);

printf("输出小于该整数的质数:");
for (int j = 0; j < len; j++)
{
printf("%d ", b[j]);
}
printf("\n");

printf("输出质数对: %d\n", result);

system("pause");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  腾讯 编程 校园招聘