2018腾讯模拟考试算法题(求该数是多少对质数相加的和)
2017-03-25 21:49
288 查看
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/65963250冷血之心的博客)
该题是2017年3月25日腾讯暑期实习生校招技术岗模拟考试题的一道算法大题。
大意就是输入一个整数,输出它可以由多少对质数相加所得。
如:输入10,输出2。因为5+5=10,3+7=10
输入11,输出0。因为小于11的质数为2,3,5,7。两两相加得不到11。
思路:
先得到小于输入整数的所有质数,并且存入list集合中
遍历list集合,寻找是否存在两两组合的机会。
输出结果(注意特殊情况的处理)
算法编程题中,经常用到的就是queue和stack这两种结果。
/*
* 第一行输入一个整数,第二行输出该整数可以由多少对质数相加得到。
* 比如,输入10,输出2.
* 因为10=5+5,10=3+7
*/
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int num = scanner.nextInt();
// 建立一个list存放小于输入数的所有质数
LinkedList<Integer> list = new LinkedList<Integer>();
// 得到所有质数,并且存入list中
int j;
for (int n = 2; n < num; n++) {
for (j = 2; j < n; j++) {
if (n % j == 0)
break;
}
if (j >= n) {
list.add(n);
}
}
// 遍历list,判断是否满足条件
int count = 0;
for (int i = 0; i < list.size(); i++) {
if (list.contains(num - list.get(i)))
count++;
}
// 结果输出,注意特殊情况,即输入的是10,刚好5是质数,所以分两种情况输出
if(num%2==0 && list.contains(num / 2))
System.out.println(count / 2 + 1);
else
System.out.println(count / 2);
}
}
}
400以内的质数如下:
如果对你有帮助,记得点赞哦~欢迎大家关注我的博客,可以进群366533258一起交流学习哦~
相关文章推荐
- 2018腾讯模拟考试,移动客户端开发岗
- 【GDOI2018模拟7.8】质数
- 【GDOI2018模拟8.11】质数
- 【java-算法】【华为真题】老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.
- 腾讯-模拟考-技术研发类-移动客户端开发-2018实习生招聘
- 2018腾讯模拟笔试——魔法阵
- 【GDOI2018模拟8.11】质数
- 【JZOJ5250】【GDOI2018模拟】质数(数论)
- 【JZOJ5250】【GDOI2018模拟8.11】质数
- 从几场模拟考试看一类分块算法
- 腾讯-2018实习生招聘-软件测试-模拟考
- 质数,函数【GDOI2018模拟7.8】
- 【JZOJ 5250】【GDOI2018模拟8.11】质数
- 算法与数据结构——算法题 8:0到9999这1万个数中有多少个数字7(腾讯面试) ? 待解决
- 腾讯-2018实习生招聘-软件测试-模拟考
- 【jzoj5250】【GDOI2018模拟8.11】【质数】
- 腾讯2018安卓实习模拟笔试题——魔法阵
- 【GDOI2018模拟7.8】质数 乱搞+哥德巴赫猜想
- [JZOJ5250]【GDOI2018模拟8.11】质数
- 腾讯-2018实习生招聘-软件测试-模拟考