@[Hi_e](/user/670582) 你 `bag()` 又没有返回值,为什么还要 `int`(
```cpp
#include <bits/stdc++.h>
using namespace std;
int n, f[300], p[150], cnt = 0, st[300];
void gp(int m) {
for (int i = 2; i <= m; i++) {
if (!st[i]) p[++cnt] = i;
for (int j = 1; j <= cnt && p[j] <= m / i; j++) {
st[p[j] * i] = 1;
if (i % p[j] == 0) break;
}
}
}
void bag() {
for (int i = 1; i <= cnt; i++) {
for (int j = p[i]; j <= n; j++) {
f[j] += f[j - p[i]];
}
}
}
int main() {
gp(200);
while (cin >> n) {
memset(f, 0, sizeof(f));
f[0] = 1;
bag();
cout << f[n] << endl;
}
return 0;
}
```
by Zemu_Ooo @ 2024-01-07 10:44:34
啊,眼瞎,谢谢
by Hi_e @ 2024-01-07 11:28:40