你pd函数for循环应该是for(int i=2;i*i<=a;i++)
这样枚举到根号 a 才不会超时。
by 13245zy @ 2023-05-14 16:57:08
判断n是不是质数只要到sqrt(n)就可以了
呃。。。虽然只能多过一个点
by sjy_2023 @ 2023-05-14 16:59:07
首先你的判断质数时间复杂度不对,应该把循环改成 `for (int i = 2; i * i <= a; i ++ )`。
其次,你的 `sc` 函数里有两层循环,不难发现第二层循环是可以省去的,因为你要找的是 `x - i` 这个值,而这个值可以直接计算。
```cpp
int sr(int x)
{
for (int i = 2; i < x; i ++ )
{
if (pd(i) && pd(x - i)
{
printf("%d=%d+%d\n", x, i, x - i);
return 0;
}
}
}
```
by 2huk @ 2023-05-14 17:02:42
建议学习 [时间复杂度](https://oi-wiki.org/basic/complexity/) 相关知识。
by 2huk @ 2023-05-14 17:04:05
哦还有
sc里面
```
for(int i=2;i<=x/2;i++)
{
int j=x-i;
if(pd(j)&&pd(i))
printf("%d=%d+%d\n",x,i,j);
}
```
by sjy_2023 @ 2023-05-14 17:06:01
不用两重循环
by sjy_2023 @ 2023-05-14 17:06:59
感谢各位大神,已经过了
by lwm7 @ 2023-05-18 15:23:10