先预处理一遍所有数,用bool类型的数组存储该下标是否是质数,并直接检索目标数减去某质数是否仍是质数。
*此处为代码
#include <iostream>
using namespace std;
const int N = 10010;
bool q[N];
int main()
{
for (int i = 2; i < 10010; i ++ )
{
int k = 0;
for (int j = 2; j * j <= i; j ++ )
if (i % j == 0) k = 1;
if (!k) q[i] = 1;
}
int n;
cin >> n;
for (int i = 4; i <= n; i += 2 )
{
int j = 2;
while (1)
{
while (!q[j]) j ++ ;
if (q[i - j])break;
j ++ ;
}
cout << i << "=" << j << "+" << i - j << '\n';
}
}