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

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

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

#include <climits>
#include <cmath>
#include <iostream>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
bool is_prime(int x) {
    if (x <= 1)
        return false;
    for (int i = 2; i * i <= x; i++) {
        if (x % i == 0)
            return false;
    }
    return true;
}

int main() {
    int n;
    cin >> n;
    vector<pair<int, int>>mp;
  	//避免重复保存素数对;
    for (int i = 1; i <= n / 2; i++) {
        if (is_prime(i) && is_prime(n - i)) {
            mp.push_back({i, n - i});
        }
    }
    int min = INT_MAX;
    int temp = 0;
    int flag = 0;
  	//查找素数对中做差绝对值最小的素数对;
    for (int i = 0; i < mp.size(); i++) {
        temp = abs(mp[i].first - mp[i].second);
        if (temp < min) {
            min = temp;
            flag = i;
        }
    }
    if(mp[flag].first<mp[flag].second){
        cout<<mp[flag].first<<endl;
        cout<<mp[flag].second;
    }else{
        cout<<mp[flag].second<<endl;
        cout<<mp[flag].first;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务