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

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

/*
2022年09月21日 11:43:09
穷举,挨个判断能组成 n 两个素数
比较这两个素数差值绝对值是否最小,不断更新min
随时要保存好这2个素数
*/
#include <iostream>
#include <math.h>
#include <vector>
using namespace std;

bool IsPrime(int x){
    for(int i = 2; i <= sqrt(x); i++){
        if(x % i == 0)
            return false;
    }
    return true;
}

int main()
{
    int n;
    cin >> n;
    vector<int> v(2, 0);
    int min = INT16_MAX;
    for(int i = 2; i < n; ++i){ // 穷举
        if(IsPrime(i) && IsPrime(n - i)){
            // 保存最接近的2个素数
            if(abs(n-i-i) < min){
                v[0] = i, v[1] = n - i; // 保存起来
                min = abs(n-i-i);
            }
        }
    }
    cout << v[0] << endl;
    cout << v[1] << endl;
    return 0;
}
/*
2022年09月21日 11:43:09
从偶数中间开始判断,这样的2个素数差值绝对就是最小的
不需要一个min随时去更新了
*/
#include <iostream>
#include <math.h>
using namespace std;

bool IsPrime(int x) {
    for (int i = 2; i <= sqrt(x); i++) {
        if (x % i == 0)
            return false;
    }
    return true;
}

int main() {
    int n;
    cin >> n;
    for (int i = n/2; i >= 0; --i) { // 从中间开始判断
        if (IsPrime(i) && IsPrime(n - i)) {
            cout << i << endl;
            cout << n - i << endl;
            break;
        }
    }
    return 0;
}