假设该数是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;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: