题解 | #查找组成一个偶数最接近的两个素数#

查找组成一个偶数最接近的两个素数

http://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9

#include <bits/stdc++.h>

using namespace std;

bool isSuShu(int num){
    for(int i = 2; i < num; i++){
        if(num % i == 0){
            return false;
        }
    }
    
    return true;
}

int main(){
    int num = 0;
    while(cin >> num){
        if(num <= 2 || num % 2 != 0){
            break;
        }
        
        vector<int> res;
        int minSub = INT_MAX; //保存最小的差值
        unordered_map<int, pair<int, int>> m; //键为差值,值为firstNum和secondNum
        for(int i = num; i >= num / 2; i--){
            int secondNum = i;
            int firstNum = num - i;
            //判断两个数字是否是素数 并且计算差值 保存进哈希表
            if(isSuShu(secondNum) && isSuShu(firstNum)){
                int sub = secondNum - firstNum;
                //cout << sub << endl;
                m[sub] = make_pair(firstNum, secondNum);
                
                minSub = min(minSub, sub);             
            }  
        }
        
        for(auto item = m.begin(); item != m.end(); item++){
            if(minSub == item->first){ //遍历寻找最小差值在哈希表中对应的位置
                res.push_back(item->second.first);
                res.push_back(item->second.second);
            }
        }
        
        for(int i = 0; i < res.size(); i++){
            cout << res[i] << endl;
        }
    }
    
    return 0;
}
华为题库题解 文章被收录于专栏

牛客华为题库的题解

全部评论

相关推荐

05-27 09:42
门头沟学院 Java
Noe1017:别给这种小丑画面行吗?知道是一坨屎,还要让大家也品尝一下?
点赞 评论 收藏
分享
Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务