腾讯2017秋招笔试编程题--素数对
2017-07-19 14:21
274 查看
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
输入描述:
输入包括一个整数n,(3 ≤ n < 1000)
输出描述:
输出对数
示例1
输入
10
输出
2
思路:先求出小于这个数的素数,素数就是质数,特点是只能被1和本身整数,具体判断条件是如果不能被2到根号n的整数整除,就是素数。接下来和leetcode第一题two sum相同处理即可,注意可以重复使用一个数。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
输入描述:
输入包括一个整数n,(3 ≤ n < 1000)
输出描述:
输出对数
示例1
输入
10
输出
2
思路:先求出小于这个数的素数,素数就是质数,特点是只能被1和本身整数,具体判断条件是如果不能被2到根号n的整数整除,就是素数。接下来和leetcode第一题two sum相同处理即可,注意可以重复使用一个数。
#include <iostream> #include <algorithm> #include <math.h> #include <map> using namespace std; int main(){ int n,result=0; cin>>n; vector<int>nums; for(int i=2;i<=n-2;i++){ bool flag=true; for(int j=2;j<=sqrt(i);j++) if((i%j)==0) flag=false; if(flag) nums.push_back(i); } map<int,int>mapping; for(int i=0;i<nums.size();i++){ mapping[nums[i]]=i; } for(int i=0;i<nums.size();i++){ if((mapping.find(n-nums[i])!=mapping.end())&&(mapping[n-nums[i]]>=i)) result++; } cout<<result<<endl; return 0; }
相关文章推荐
- 腾讯2017秋招笔试编程题:素数对 [python]
- 腾讯2017秋招笔试编程题之素数
- 腾讯2017秋招笔试编程题(三)---素数对
- [笔试编程题] 腾讯2017暑期实习生编程题-java
- 腾讯2017秋招笔试编程题:编码 [python]
- 腾讯2017秋招笔试编程题--游戏任务标记
- 腾讯2017秋招笔试编程题:游戏任务标记 [python]
- 腾讯2017秋招笔试编程题_编码
- 腾讯2017秋招笔试编程题:geohash [python]
- [笔试练习]腾讯2017暑期实习生编程题
- 腾讯2017暑假实习生招聘笔试编程题
- 腾讯2017笔试题 求素数对
- 腾讯2017秋招笔试[编程题] geohash编码
- 2017腾讯实习生招聘笔试编程题
- 腾讯2017秋招笔试编程题
- 腾讯2017暑假实习生招聘笔试编程题(2)
- 2017腾讯校招笔试编程题-拼凑零钱
- 牛客网解题-2017腾讯秋招笔试编程题练习卷
- 腾讯2017秋招笔试编程题--编码
- 腾讯2017秋招笔试编程题