您的位置:首页 > 其它

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一起交流学习哦~
 

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