C++ 程序设计,从键盘输入任意一个正整数,判断是否能写成两个素数之和,如果能,就输出这两个素数,否则输出“不能写成两个素数之和”。

假设该数是m, n从1开始循环到m-1,逐个判断n和m-n是否都是素数,如果都是,则m可以写成两个素数之和。

#include <iostream>
#include <cmath>

using namespace std;

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

int main() {
    int n;
    cin >> n;
    bool flag = false; 
    for (int i = 2; i <= n / 2; i++) {
        if (isPrime(i) && isPrime(n - i)) { 
            cout << i << " " << n - i << endl;
            flag = true;
        }
    }
    if (!flag) {
        cout << "不能写成两个素数之和" << endl;
    }
    return 0;
}


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^