为什么第二个点RE??

P1304 哥德巴赫猜想

这个题数据比较大,不能直接在循环里面调用质数判断函数,建议使用预处理。可以使用线性筛。 如下是线性筛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


|