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

#include <cmath>
#include <iostream>
using namespace std;
//素数
bool isPrime(int n ){
    if(n<=1) return false;
    if(n == 2) return true;
    if(n%2==0) return false;
    for(int i = 3;i<=sqrt(n);++i){
        if(n%i==0) return false;
    }
    return true;
}
int main() {
    int n;
    cin >> n;
    //从中间向两边找
    int mid = n/2;
    int left = mid - 1,right = mid+1;

    if(isPrime(mid)){ //判断中间数是否为素数
        cout<< mid << endl << mid;
    } else {
        while (left > 1 && right < n) {
            if(left + right == n && isPrime(left) && isPrime(right)){ //符合条件输出
                cout<< left << endl << right << endl;
                break;
            } else {
                //如果left和right不是素数或者两数和不为n,自增自减
                if(!isPrime(left) || left + right != n){
                    --left;
                }
                if(!isPrime(right)|| left + right != n){
                    ++right;
                }
            }
        }
        
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务