您的素数判断逻辑存在错误,导致输出结果不正确。
您的素数判断逻辑中的变量b没有在每次循环中重置为1,导致逻辑混乱。
为了解决这些问题,您可以按照以下步骤进行修改:
在每次循环开始时,将变量b重置为1。
在判断素数时,需要将判断逻辑放在内层循环结束后,以确保在内层循环结束后再进行判断
```c
#include <iostream>
using namespace std;
int main() {
int a, s = 0, b = 1, s1 = 0, s2 = 0;
cin >> a;
if (a % 2 != 0) {
s = a + 1;
} else {
s = a;
}
for (int i = 2; i <= s; i++) {
b = 1; // 重置b为1
for (int j = 2; j <= i - 1; j++) {
if (i % j == 0) {
b = 0;
break; // 如果能整除,则不是素数,直接跳出内层循环
}
}
if (b == 1) {
s2 = a - i;
}
if (b == 1 && s2 >= 0) {
cout << i << endl;
s1 += 1;
a -= i;
}
}
cout << s1;
return 0;
}
```
by laoyuan @ 2024-04-04 22:01:53
@[laoyuan](/user/1054114) 好的,谢谢大佬
by ytezwsw @ 2024-05-04 08:09:57