这个题数据比较大,不能直接在循环里面调用质数判断函数,建议使用预处理。可以使用线性筛。
如下是线性筛AC代码:
```cpp
#include<cstdio>
using namespace std;
bool a[10010] = {1,1};//存a[i]是否是质数
int b[10000];//存质数
int main()
{
int n;
scanf("%d",&n);
int cur = 0;
for(int i = 2 ; i <= n/2 ; i++)
{
for(int j = i ; i*j<=n ; j++)
{
if(a[i]==1)break;
a[i*j]=1;
}
}//预处理
for(int i = 1 ; i <= n ; i++)
{
if(a[i]==0)
{
cur++;
b[cur]=i;
}
}//存放质数,好调用
for(int i = 1 ; i <= (n-2)/2 ; i++)
{
int c = 2*i+2;
printf("%d=",c);
for(int j = 1 ; b[j] <= n/2 ; j++)
{
if(a[c-b[j]]==0)
{
printf("%d+%d\n",b[j],c-b[j]);
break;
}
}
}//判断并输出
return 0;
}
```
by __My0217__ @ 2022-11-05 22:23:57