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

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

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

#include <climits>
#include <iostream>
#include <cmath> 
#include <vector>

using namespace std;

bool isPrime(int num)
{
    if (num <= 1) return false;
    if (num <= 3) return true;
    if (num % 2 == 0 || num % 3 == 0) return false;

    int i = 5;
    while (i*i <= num){
        if (num % i == 0 || num % (i+2) == 0) return false;
        i += 6;
    }
    return true;
}
int main ()
{
    int input;
    cin >> input;
    vector<int> vecPrime;

    for (int i = 2; i <= input; i++){
        if (isPrime(i)){
            vecPrime.push_back(i);
            // cout << i << endl;

        }
    }
    
    int tmp = INT_MAX;
    int n = INT_MAX,m = INT_MAX;
    for (int i = vecPrime.size() - 1; i >= 0; i--){
        for (int j = i ; j < vecPrime.size(); j++){
            if ((vecPrime[i] + vecPrime[j] == input)
                && tmp > abs(vecPrime[i] - vecPrime[j])){
                tmp = abs(vecPrime[i] - vecPrime[j]);
                
                n = vecPrime[i];
                m = vecPrime[j];
                break;
            }       
        }
    }
    if (n!=INT_MAX)
    {
        cout << n << endl;
        cout << m << endl;
    }
        
    return 0;
}

全部评论

相关推荐

06-11 17:39
门头沟学院 Java
小呆呆的大鼻涕:卧槽,用户彻底怒了
点赞 评论 收藏
分享
陈逸轩1205:才105 哥们在养生呢
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 16:15
我应届生,去年10月份开始在这家公司实习,到今年10月份正好一年想(实习+试用期),在想要不要提前9月份就离职,这样好找工作些,但又差一个月满一年,又怕10月份国庆回来离职,容易错过了下半年的金九银十,到年底容易gap到年后
小破站_程序员YT:说这家公司不好吧,你干了快一年 说这家公司好吧,你刚毕业就想跑路说你不懂行情吧,你怕错过金九银十说 你懂行情吧,校招阶段在实习,毕业社招想换工作 哥们,我该怎么劝你留下来呢
应届生,你找到工作了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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